Как я могу получить доступ к не финальной переменной из анонимного внутреннего класса? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть 2 класса Java.

  1. TestLogging
  2. Test2

В обоих классах я написал одну и ту же логику.Но в классе TestLogging мне не разрешен доступ к нефинальной переменной в анонимном внутреннем классе.

Но в классе Test2 почему мне разрешен доступ к нефинальной переменной в анонимном внутреннем классе?

TestLogging

Test2

Как можно получить доступ к нефинальной переменной из анонимного внутреннего класса?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Проверка конфигурации Maven для версии Java enter image description here

0 голосов
/ 11 октября 2018

Различие связано с версией JDK, для которой вы компилируете (или целевой версией).

Java 8 понимает "эффективно финальные" переменные.Когда вы компилируете с JDK 8, вам не нужно явно объявлять переменную как final, чтобы ссылаться на нее в анонимном классе.

Другими словами, переменная s, хотя и не объявлена ​​какfinal, не переназначается, и это делает его «фактически окончательным» (проверьте этот ответ для получения дополнительной информации).

До того, как Java 8 (и ваш другой проект - TestLogging - имеет целевую версию 1.5), переменные должны были быть явно объявлены как окончательные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...