2016-06-10 4 views
-1

У меня есть эта ошибка при попытке использовать локальный член одного класса во внутреннем классе внутри. Я знаю, что объявить его окончательным, решит проблему, но я прочитал, что Java 8 должен обрабатывать ее автоматически, я использую Intellij с Java 8, и он все еще не компилируется. Есть ли другой способ исправить это, не объявив его окончательным? спасибо.«переменная доступна изнутри внутреннего класса, которая должна быть объявлена ​​окончательной» ошибка

+1

Почему вы не хотите, чтобы объявить его окончательным? –

+1

перейти на уровень 8 изменить структуру проекта – saman

+0

Saman- я уже сделал. Энди, мне нужно это в моем университете, и я не уверен, хотят ли инструкторы использовать его. если нет лучшего способа, поэтому я предполагаю, что тот примет его. –

ответ

4

Я знаю, что объявить его окончательным, решит проблему, но я прочитал, что Java 8 должен обрабатывать ее автоматически.

Java 8 будет обрабатывать его, если переменная эффективно окончательная.

я могу думать о двух возможных объяснений:

  1. Может быть переменная не эффективно окончательным. Попробуйте явно объявить его как final. Если вы получите ошибку компиляции (например, заявив, что что-то пытается изменить final), то переменная не является окончательной.

  2. Возможно, вы не настроили Intellij и проект правильно для Java 8; например

    • Установить уровень источника; см @ ответ Саман в
    • Проверьте у вас есть право JDK отмеченными: Java 8 doesn't compile on Intellij15
+0

К сожалению, это был первый вариант. Благодарю. –

1

Я думаю, вы должны изменить свой уровень языка из «Project Structure» -> «Модуль» -> «Ваше имя проекта» -> «Источник» -> «Язык Level» и установить его на 8

enter image description here

Смежные вопросы

 Смежные вопросы