Внутренние локальные классы в Java

1
public class Main {
    public static void main(String[] args) {
        int b=1;
        final int c=2; 
        String s1[] = new String[]{"A","B","C"};

        class InnerMain{                                    
            int a=5;

            public void show(){ 
                System.out.println(s1[0]);
                System.out.println("A:" + a);
                System.out.println("B:" + b);
                System.out.println("C:" + c);
            }
        }

        InnerMain test =new InnerMain();
        test.show();
    }
}

В книге, которую я изучил, говорится, что локальный класс может использовать только final переменные и ссылки метода, в котором находится локальный класс. В этом примере я использовал переменную b которая не является final или ссылкой. Он бежал, и я не получил никаких ошибок. Как? Может ли кто-нибудь объяснить это поведение?

Теги:
local-class

1 ответ

5
Лучший ответ

Ваша книга, вероятно, устарела. Начиная с Java 8 вы можете эффективно использовать конечные локальные переменные.

Если вы попытались изменить b любом месте до, после или в определении локального класса, вы получите ошибку компилятора.

  • 0
    спасибо за ваш ответ. И как я могу следить за новостями об обновлении Java?
  • 0
    @Furkan Это официальная страница Oracle.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню