Когда myObj
равно нулю, окончательные поля не будут установлены. Это приводит к ошибке компиляции, они должны быть установлены после завершения конструктора foo(Object myObj, int extraParam)
.
Если вам нужно создать экземпляр foo
, можно добавить блок else
.
public foo(Object myObj, int extraParam) {
if (myObj != null) {
smth = extraParam;
smthElse = extraParam;
} else {
smth = 0;
smthElse = 0;
}
}
или создайте фабричный метод для выполнения проверки.
private foo(int extraParam) {
smth = extraParam;
smthElse = extraParam;
}
public static foo from(Object myObj, int extraParam) {
return (myObj == null) ? new foo(0) : new foo(extraParam);
}