Java appel du constructeur de constructeur
J'ai un constructeur
private Double mA;
private Double mB;
Foo(Double a) {
mA = a;
mB = a + 10;
}
Foo(Double a, Double b) {
mA = a;
mB = b;
//some logic here
}
si je fais un appel à la deuxième constructeur comme suit:
Foo(Double a) {
Double b = a + 10;
this(a, b);
}
que le compilateur me dit, que le constructeur doit être la première instruction. Donc j'ai besoin de copier toute logique à partir de la deuxième constructeur de première?
Double Possible de stackoverflow.com/questions/285177
OriginalL'auteur user1284151 | 2012-10-14
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas simplement faire
this(a, a+10)
à la place?Noter que
this()
ousuper()
doit être la première instruction dans un constructeur, si elle est présente. Vous pouvez, cependant, toujours dans la logique des arguments. Si vous avez besoin de faire une logique complexe, vous pouvez le faire en appelant une méthode de classe dans un argument:pour statique
calculateArgument
, non-substituables.Je pense que ce n'est pas parce qu'il est non-substituables, mais parce que vous ne pouvez pas appeler la méthode d'instance dans ce()/super()
OriginalL'auteur nneonneo
Si vous utilisez
this()
ousuper()
appel à votre constructeur à appeler l'autre constructeur, il doit toujours être la première instruction de votre constructeur.C'est pourquoi le code suivant ne compile pas: -
Vous pouvez la modifier pour suivre la règle ci-dessus: -
OriginalL'auteur Rohit Jain
Invocation d'un autre constructeur doit être la première ligne dans le constructeur.
Vous pouvez appeler explicite constructeur invocation comme -
OriginalL'auteur Subhrajyoti Majumder