你好。简单点说吧,没有代码。你使用的是JRE1.7,而你朋友是JRE1.8。Java8的特性我不多说,网上资料一大把。
它的文档里有这么一句话:
starting in Java SE 8, a local class can access local variables and parameters of the enclosing block that are final or effectively final(
http://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html)
我英文不好啊,大意就是在Java8里的局部类可以访问这个类里的变量和方法的参数,前提是它是个常量或者实际上就是个常量的变量。
其作用就是简化代码,“实际上就是个常量的变量”(我这么理解的),它本身是类的成员变量或者方法内的变量或参数,但只要被内部类使用了,就会隐式的将它转换为内部类使用常量。
你知道Java的值传递和引用传递,实际上像int、long这样的基本类型和String,传到给方法后,你在外部改变这个值是影响不到方法内部运行的。
而其它类是传递给方法它所引用的对象,即使你在该方法外写obj = null;也只是改变了引用变量而不是对象,毕竟传递给方法的是对象,final obj和非final的obj操作起来其实就是毫无区别。
以前在使用内部类调用外部类属性时要求转换为final 变量,这毫无意义啊,仅仅是标识它不可再被改变,然后用起来繁琐了。Java8做了改变,不管你的变量值和对象怎么变化,只要使用前的最终就好了。
最后呢,学习两个版本还是挺好的,Java8还是不错的,它有语法上的改变,有必要学学。Java6和7虽然使用广泛一些,但毕竟过时了。另外还有Java9,等oracle正式发布了再去看看吧。
追问谢谢
本回答被提问者采纳