Dato che ho una classe Base che ha un costruttore di argomento singolo con un oggetto TextBox come argomento. Se ho una classe semplice della forma seguente:È possibile eseguire il calcolo prima di super() nel costruttore?
public class Simple extends Base {
public Simple(){
TextBox t = new TextBox();
super(t);
//wouldn't it be nice if I could do things with t down here?
}
}
otterrò un errore che mi dice che la chiamata a super deve essere la prima chiamata in un costruttore. Tuttavia, stranamente, posso farlo.
public class Simple extends Base {
public Simple(){
super(new TextBox());
}
}
Perché è consentito, ma il primo esempio non lo è? Posso capire di aver bisogno di impostare prima la sottoclasse, e forse non permettere che le variabili oggetto vengano istanziate prima che venga chiamato il super-costruttore. Ma t è chiaramente una variabile di metodo (locale), quindi perché non permetterlo?
C'è un modo per aggirare questa limitazione? Esiste un modo valido e sicuro per tenere le variabili su cose che potresti costruire PRIMA di chiamare super ma DOPO aver inserito il costruttore? O, più genericamente, permettendo che il calcolo sia fatto prima che venga effettivamente chiamato super, ma all'interno del costruttore?
Grazie.
per quale motivo possibile è questo stato taggato come gwt? Perché lo stavi provando in gwt ?? –
TextBox era una classe GWT, ma no, non è rilevante, suppongo. –