Я использую Java 21. < /p>
У меня есть два класса: < /p>
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;
}
}
Класс MySubClass имеет конструктор копирования, как показано выше.
Я хочу избежать бросания NullPointerException в MySubClass конструктор, если аргумент ToCopy является null, и скорее бросит мое исключение. Но, конечно, призыв к супер (...) должен быть первой строкой в конструкторе. Затем выполняя проверку аргумента после вызова в Super (...) в подклассе, или сделать MySuperfield в mysuperclass не окончательно, и предоставление сеттера в супер классе. Должно быть что -то лучше.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;
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... onstructor