java8新增了很多功能,可以大大简化代码,这个系列将会一一辅助代码加以介绍。
局部内部类和匿名内部类访问的局部变量必须由final修饰,java8开始,可以不加final修饰符,由系统默认添加。java将这个功能称为:Effectively final 功能。
下面是完整掩饰代码(至少使用jdk1.8版本):
public class EffectivelyFinalDemo { public static void main(String[] args) { //局部内部类和匿名内部类访问的局部变量必须由final修饰,java8开始,可以不加final修饰符,由系统默认添加 //因此下面两句的效果是一样的 //final int age=99; int age=99; //运行代码 <1>将会抛出以下错误 //EffectivelyFinalDemo.java:14: 错误: 从内部类引用的本地变量必须是最终变量或实际上 //的最终变量 //age=11; <1> A a=new A() { public void test() { //Cannot refer to a non-final variable age //inside an inner class defined in a different method System.out.println(age); } }; a.test(); } } //接口 interface A { void test(); }
时间: 2024-10-12 12:00:35