问题描述
学习lambda过程中的时候,想要通过初步编写匿名内部类的方式,然后转换lambda的方式来慢慢熟悉lambda表达式的语法,发现自己成功编写了匿名内部类,但是idea却没有办法转换成lambda
如下图所示
1 单个文件不能使用lambda的转换
2 两个一样的文件一个可以使用,一个就不行
ps: 注意两边Runnable的字体的颜色,一个是实体,一个是透明的.
解决过程
1 需要确保安装的jdk是jdk1.8或者更高版本,并且在idea中成 功配置
2 在pom.xml中增加一个插件,使得maven支持jdk1.8语法
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
3.1 修改项目结构中相关的jdk版本和语言等级
3.2 Java compiler的level为1.8
重启idea后,发现依然无法使用lambda的转换功能,之后怀疑是idea插件影响了,再一次卸载掉相关的插件,清理idea的缓存重启,并且更换idea的版本,最终发现依然不行.
经过最终的尝试发现问题的核心关键以下位置的修改:
这里的语言检查级别直接会影响到lambda的快捷键转换.
最后修改完毕以后 两个文件都可以使用lambda表达式的转换了 ,如下图所示 :
如果哪里写的不对,希望广大业内大佬批评指正,后面慢慢完善.谢谢 !