为什么netbeans不提示要使用final修饰局部变量,连警告都没有,而且可以运行,而Eclipse却直接报错,要求使用final,环境是JDK8,Netbeans8.0,Eclipse,为什么两个IDE不一样?这里发图不方便,下面这个链接可以看看截图 http://zhidao.baidu.com/question/582953016348781245.html?quesup2&oldq=1
确定在netbeans里能运行吗?
在java8语法里面是支持的,你的eclipse没有更新的原因。在eclipse-jee-kepler-SR2-Java8-win32中,使用java8,类似你那代码是能通过编译的。
在java8里面,可以简单认为,如果一个变量加上final之后,程序不会报错,也就是说这个变量自初始化之后再没有赋值过(这叫effectivelyfinal),那么就可以跟加final的变量一样被内部类引用。
既然用java8.那么可以这么写:addActionListener(e->{if....else...});
lambda里面如果引用外部变量,那么必须是final类型,当然你可以不声明final修饰符。但是jvm会自动转换为final.
如下代码:
intnum=0;版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。