Когда я пытаюсь скомпилировать следующий класс
class C1 {
Integer v1 = v1;
}
, я получаю Illegal Self Reference
ошибку. Теперь рассмотрим другой класс, как показано ниже.
class C2 {
Integer v1;
{
v1 = v1;
}
}
И он компилируется. В чем разница между обоими классами и почему один компилируется, а другой нет.
ОБНОВЛЕНИЕ:
Если v1
не стало доступно в классе C1
, то почемуследующая работа в классе тоже?
class C3 {
Integer v1 = v1 = 1;
}
В приведенном выше C3
класс v1
доступен для выражения v1 = 1
, которое нужно оценить, но оно не работает в C1
. Вы можете объяснить?