定义在方法内的内部类,访问方法内的变量必须是final变量,这是毕老师说的,网上也公认这一说法
但是
在我机器上怎么能访问呢?我的是JDK1.8
代码如下
import java.util.Date;
class Outer {
int x = 1;
void func(final int z) {
final int y = 2;
Date d = new Date();
class Inner {
void func() {
System.out.println("Outer.x = " + /* Outer.this. */x);
System.out.println("y (final int) = " + y);
System.out.println("z (parameter final int) = " + z);
System.out.println("d (Date) = " + d); // 这里为什么局部内部类可以访问方法中的非final变量?
}
}
new Inner().func();
}
}
public class InnerClass {
public static void main(String[] args) {
new Outer().func(5);
}
}
运行结果
Outer.x = 1
y (final int) = 2
z (parameter final int) = 5
d (Date) = Wed Dec 10 02:54:12 CST 2014
|
|