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
или ссылкой. Он бежал, и я не получил никаких ошибок. Как? Может ли кто-нибудь объяснить это поведение?
Ваша книга, вероятно, устарела. Начиная с Java 8 вы можете эффективно использовать конечные локальные переменные.
Если вы попытались изменить b
любом месте до, после или в определении локального класса, вы получите ошибку компилятора.