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