Почему ссылка на не окончательные переменные внешнего класса внутри метода внутреннего класса больше не дает ошибку - PullRequest
0 голосов
/ 24 января 2019

Я обнаружил, что мы не можем использовать не финальную переменную внутри метода внутреннего класса, но когда я сам провел эксперимент, я получил другой результат

В StackOverflow есть несколько Ответов, описывающих причину Почему внутренние классы Java требуют «окончательных» переменных внешнего экземпляра? , я понял концепцию и попробовал сам с двумя классами в IntelliJ

Driver Класс

public class Driver{
  public static void main(String[] args) {
  String outsideVar = "anything";
  InterfaceClassTest object1 = new InterfaceClassTest() {
        @Override
        public void InterfaceFunction() {
                System.out.println(outsideVar);
         }
    };
  object1.InterfaceFunction();  
};}

InterfaceClassTest Класс

 public interface InterfaceClassTest {
  public abstract void InterfaceFunction();
  }

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

...