可以访问的。引用《Thinking In Java》里的说法:“局部内部类能访问所在方法中的final类型的参数和变量”。 如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final 的。
示例代码:
public class Tester {
public static void main(String[] args) {
A a = new A();
C c = new C();
c.shoutc(a.shout(5));
}
}
////////////////////////////////////////////////////////
class A {
public void shouta() {
System.out.println("Hello A");
}
public A shout(final int arg) {
class B extends A {
public void shouta() {
System.out.println("Hello B" + arg);
}
}
return new B();
}
}
////////////////////////////////////////////////////////
class C {
void shoutc(A a) {
a.shouta();
}
}