In Java, um Null -Dereferenzen zu vermeiden, wenn sie Super (...) im Konstruktor anrufen
Posted: 30 Apr 2025, 20:25
Ich benutze Java 21. < /p>
Ich habe zwei Klassen: < /p>
Die Klasse mySubClass hat einen Kopierkonstruktor, wie oben gezeigt. Aber natürlich muss der Anruf bei Super (...) die erste Zeile im Konstruktor sein. Und dann die Argument -Validierung nach dem Anruf bei Super (...) in der Unterklasse oder MySuperfield in MySuperClass nicht endgültig machen und einen Setter in der Superklasse bereitstellen. Es muss etwas Besseres geben.
Ich habe zwei Klassen: < /p>
Code: Select all
abstract class MySuperClass {
private final Object mySuperField;
MySuperClass(Object myField) {
this.mySuperField = myField;
}
public Object getMySuperField() {
return mySuperField;
}
}
< /code>
public class MySubClass extends MySuperClass {
private final Object mySubField;
public MySubClass(MySubClass toCopy) {
super(toCopy.getMySuperField());
this.mySubField = toCopy.mySubField;
}
}
Code: Select all
public class MySubClass extends MySuperClass {
private final Object mySubField;
public MySubClass(MySubClass toCopy) {
super(toCopy == null ? null : toCopy.getMySuperField());
if (toCopy == null) {
// Throw my exception
}
this.mySubField = toCopy.mySubField;
}
}