88 votes

Impossible de faire référence à "X" avant que le constructeur du super-type n'ait été appelé, où x est une variable finale.

Considérons la déclaration de classe Java suivante :

public class Test {

    private final int defaultValue = 10;
    private int var;

    public Test() {
        this(defaultValue);    // <-- Compiler error: cannot reference defaultValue before supertype constructor has been called.
    }

    public Test(int i) {
        var = i;
    }
}

Le code ne sera pas compilé, le compilateur se plaignant de la ligne que j'ai mise en évidence ci-dessus. Pourquoi cette erreur se produit-elle et quelle est la meilleure solution ?

0voto

Hardik Mehta Points 450

Le constructeur est appelé au moment de la création de l'objet, de sorte qu'aucune référence à la variable n'est reconnue par le compilateur, qui n'a aucune connaissance de la variable d'instance puisque l'objet n'est pas encore créé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X