30

我更喜欢 Java 7 引入的用于泛型的菱形语法——与其说是从节省时间的角度来看(毕竟大多数 IDE 无论如何都会为您填充这一点),但仅仅是因为它使代码看起来更清晰一些。由于这个和其他原因(主要是我正在开发一个新软件,Java 7 中的一些新 API 将很有用)我很可能会切换现有的代码库以使用/需要 Java 7。

但是,已经有相当一部分已经编写了钻石前语法,我想始终使用钻石语法。是否有 IDE 快捷方式(我正在使用 Netbeans,但显然可以在任何免费的 IDE 中打开项目来完成任务)或其他可以自动切换现有通用代码以使用菱形语法的东西?

4

6 回答 6

45

哦,是的,我已经在 IntelliJ(免费社区版)上成功完成了这项工作。

菜单 > 分析 > 检查代码...

在结果中,选择“Java 语言级别迁移辅助 > 显式类型可以替换为 <>”

右键单击,运行“Apply Fix 'Replace with <>'” 你得到了钻石。

在异常类中存在关于 diamond 的错误,因此修复后某些代码可能无法编译。那时您必须将它们还原。

// anonymous class, <> doesn't work.
new Factory<Pig>(){ ... }  
// however IntelliJ may wrongly "fix" it to
new Factory<>(){ ... }   // does not compile.
于 2011-07-23T02:52:46.793 回答
8

如果您只想分析钻石而不是所有其他检查,请使用 IntelliJ IDEA 12 并转到:

分析 > 按名称运行检查... > 在打开的提示中键入“显式类型可以替换为 <>” > 选择下拉条目并按 Enter

检查运行后,您可以选择在屏幕底部的检查选项卡中应用修复。

这比使用常规的“分析 > 检查代码...”运行每个代码检查要快得多

于 2013-04-08T17:33:16.137 回答
7

使用 Eclipse,您可以使用正则表达式进行查找/替换。

搜索:

new (\w+)<.+>

并替换为:

new $1<>

这也将替换任何匿名内部类,因此可能会发生编译错误。

于 2014-10-21T16:34:06.133 回答
4

Eclipse 检测冗余类型参数并提供快速修复以删除它们并创建菱形,请参阅http://thecoderlounge.blogspot.com/2011/07/java-7-support-in-eclipse-jdt-beta-part_22.html

于 2011-07-23T15:38:02.460 回答
2

这可以使用 Netbeans 内置功能“检查和转换”来完成。

  1. 打开Refactor->Inspect and Transform
  2. 使用Single InspectionCan Use Diamond
  3. 点击Inspect
  4. 点击Do Refactoring
于 2015-11-05T16:08:19.883 回答
0

您还可以使用 eclipse“清理”工具。(来源 -> 清理,选项卡:不必要的代码,“删除冗余类型参数”)

于 2018-07-24T11:38:34.830 回答