Angesichts der Tatsache, dass ich eine Klassenbasis habe, die einen einzelnen Argumentkonstruktor mit einem Textbox -Objekt hat, wie es Argument ist. Wenn ich eine Klasse in der folgenden Form habe: < /p>
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?
}
}
< /code>
Ich werde einen Fehler erhalten, der mir sagt, dass der Anruf bei Super der erste Anruf in einem Konstruktor sein muss. Seltsamerweise kann ich das jedoch tun. < /P>
public class Simple extends Base {
public Simple(){
super(new TextBox());
}
}
< /code>
Warum ist dies durchdacht, aber das erste Beispiel ist nicht? Ich kann verstehen, dass ich zuerst die Unterklasse einrichten muss und vielleicht nicht zulassen, dass Objektvariablen vor dem Aufrufen des Superkonstruktors instanziiert werden. Aber t ist eindeutig eine (lokale) Variable. Warum also nicht zulassen? < /P>
Gibt es eine Möglichkeit, diese Einschränkung umzugehen? Gibt es einen guten und sicheren Weg, um Variablen für Dinge zu halten, die Sie möglicherweise konstruieren, bevor Sie Super anrufen, aber nachdem Sie den Konstruktor eingegeben haben? Oder genauer gesagt, dass die Berechnung vor Super -Super aufgerufen wird, aber innerhalb des Konstruktors?
Ist es möglich, im Konstruktor vor Super () zu berechnen? ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post
-
-
JWKSet gibt den Konstruktor nicht 'jWkset (List
)' im Konstruktor nicht auf
by Anonymous » » in Java - 0 Replies
- 27 Views
-
Last post by Anonymous
-
-
-
JWKSet gibt den Konstruktor nicht 'jWkset (List
)' im Konstruktor nicht auf
by Anonymous » » in Java - 0 Replies
- 26 Views
-
Last post by Anonymous
-