Dai un'occhiata al seguente frammento:
public class Foo {
int digit;
String name;
Foo (int d, String n) {
this(d);
// cannot do following.
//compile-time error: Constructor call must be first statement in a Constructor
//this(n);
}
Foo (int p) {
digit = p;
}
Foo (String q) {
name = q;
}
Quale sarebbe la ragione di questa restrizione? Capisco perché chiamare Costruttore (sia in un Costruttore o in un metodo) deve essere la prima affermazione - l'oggetto dovrebbe essere inizializzato correttamente prima di essere usato. Quello che non ottengo è che il compilatore non permette di chiamare più costruttori della stessa classe all'interno di un costruttore. Non vedo alcun problema con questo costrutto, sia per quanto riguarda l'inizializzazione che gli invarianti.
Sarebbe bello se qualcuno potesse far luce su ciò che mi manca qui ...
Grazie!