Как инициализировать окончательное поле в теле конструктора?
В основном, это то, что я пытаюсь сделать:
ClassName
{
final OtherClass field;
ClassName()
{
field = new OtherClass(this);
}
}
Ответ 1
Невозможно назначить конечное поле в теле конструктора. Конечное поле должно быть назначено перед телом конструктора, в списке инициализаторов или декларации:
ClassName
{
final OtherClass field = new OtherClass(); // Here
ClassName()
: field = new OtherClass(); // or here
{
}
}
Поскольку вы не можете использовать this в списке инициализаторов или в объявлении, вы не можете делать то, что вы планируете делать.