Java8新特性:Effectively final
Java 中局部内部类和匿名内部类访问的局部变量必须由 final 修饰,以保证内部类和外部类的数据一致性。但从 Java 8 开始,我们可以不加 final 修饰符,由系统默认添加,当然这在 Java 8 以前的版本是不允许的。Java 将这个功能称为 Effectively final 功能。
编写同样的代码,分别在 Java 7 和 Java 8 下运行,代码如下:
public class Test { public static void main(String[] args) { String name = "C"; new Runnable() { @Override public void run() { System.out.println(name); } } } }
图 1 是 Java 7 编译结果,图 2 和图 3 是 Java 8 编译结果。
发表评论