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

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

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post