自动将Intellij Idea中的所有匿名内部类替换为lambda表达式

32

我正在开发一个使用Java 7实现的项目,现在想要迁移到Java 8。我使用IntelliJ Idea,并想通过正则表达式查找("new .(.)\s*{[.|\s]*")来查找所有的“新内部类出现”的内容,并用它们的匿名版本替换,但这些内容非常多!如何让IntelliJ强制替换所有这些内部类?


2
不是所有的匿名类都可以表示为 lambda 表达式。 - bcsb1001
好的。那么有哪些可以被表示出来呢? - mahdi_12167
我认为这个功能可能没有默认提供。也许需要一些插件。 - AdrianS
https://www.jetbrains.com/help/idea/2016.1/tutorial-migrating-to-java-8.html?origin=old_help#d359489e196 - Holger
1个回答

63
Analyze 菜单中,选择 "Run Inspection by Name..."。在搜索框中输入 "Anonymous" ,并选择那个说 "Anonymous class may be replaced by lambda" 或类似的选项。选择你的范围并开始分析。
在结果中,您可以逐个检查它们,并单击右侧的 "Replace with lambda" 链接进行更改,或者,如果您勇敢,可以右键单击结果顶部的节点,然后选择 "apply fix" 来更新所有结果。

5
在我的情况下,找不到“匿名类可以被lambda替代”,而是应该使用“匿名类型可以被lambda替代”。 - HendraWD
这也可以反向运行(将Lambda转换为匿名类),方法是搜索“Lambda can be replaced with anonymous class”。 - jcady

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接