我更喜欢Java 7引入的泛型的菱形语法 - 从节省时间的角度来看(毕竟大多数IDE都为你填补了这一点),只是因为它使代码看起来更清晰。由于这个和其他原因(主要是我正在开发一个新的软件和Java 7中的一些新API将是有用的),我很可能会切换现有的代码库来使用/需要Java 7。
然而,有一个公平的块已经编写了钻石前语法,我想始终如一地使用钻石语法。是否有IDE快捷方式(我使用Netbeans但显然可以在任何免费的IDE中打开项目来完成任务)或其他可以自动切换现有通用代码以使用菱形语法的东西?
答案 0 :(得分:41)
哦,是的,我已经在IntelliJ(免费社区版)上成功完成了这项工作。
菜单>分析>检查代码......
在结果中,选择“Java语言级别迁移辅助工具> Explicity类型可以替换为<>”
右键单击,运行“应用修复'替换为<>'”并且您获得了钻石。
在anomymous类上有一个关于菱形的错误,所以有些代码可能无法在修复后编译。你将不得不将它们还原回来。
// anonymous class, <> doesn't work.
new Factory<Pig>(){ ... }
// however IntelliJ may wrongly "fix" it to
new Factory<>(){ ... } // does not compile.
答案 1 :(得分:8)
如果您只是想分析钻石而不是所有其他检查,请使用IntelliJ IDEA 12并转到:
分析&gt;按名称运行检查...&gt;类型“显式类型可以替换为&lt;&gt;”进入打开的提示&gt;选择下拉条目并按Enter键
检查运行后,您可以选择在屏幕底部的“检查”选项卡中应用此修复。
这比使用常规'Analyze&gt;运行每个代码检查更快检查代码......'
答案 2 :(得分:7)
使用Eclipse,您可以使用正则表达式来查找/替换。
搜索:
new (\w+)<.+>
并替换为:
new $1<>
这也将替换任何匿名内部类,因此可能会发生编译错误。
答案 3 :(得分:4)
Eclipse检测冗余类型参数并提供快速修复以删除它们并创建钻石,请参阅http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part_22.html
答案 4 :(得分:1)
这可以使用Netbeans内置功能“Inspect and Transform”来完成。
Refactor
- &gt; Inspect and Transform
Single Inspection
:Can Use Diamond
Inspect
Do Refactoring
答案 5 :(得分:0)
您还可以使用日食的“清理”工具。 (源->清理,选项卡:不必要的代码,“删除冗余类型参数”)