Инициализировать поле перед запуском суперконструктора?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Инициализировать поле перед запуском суперконструктора?

Сообщение Anonymous »

Есть ли в Java какой-либо способ инициализировать поле до запуска суперконструктора?

Даже самые уродливые хаки, которые я могу придумать, отклоняются компилятором:

Код: Выделить всё

class Base
{
Base(String someParameter)
{
System.out.println(this);
}
}

class Derived extends Base
{
private final int a;

Derived(String someParameter)
{
super(hack(someParameter, a = getValueFromDataBase()));
}

private static String hack(String returnValue, int ignored)
{
return returnValue;
}

public String toString()
{
return "a has value " + a;
}
}
Примечание. Проблема исчезла, когда я переключился с наследования на делегирование, но мне все равно хотелось бы знать.

Подробнее здесь: https://stackoverflow.com/questions/156 ... uctor-runs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»