Page 1 of 1

In Java, um Null -Dereferenzen zu vermeiden, wenn sie Super (...) im Konstruktor anrufen

Posted: 30 Apr 2025, 20:25
by Anonymous
Ich benutze Java 21. < /p>
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;
}
}
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.

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;
}
}