【问题标题】:IntelliJ is it possible to add @Overrides to all methods of a particular interface?IntelliJ 是否可以将 @Overrides 添加到特定接口的所有方法中?
【发布时间】:2012-01-27 09:05:40
【问题描述】:

我创建了一个接口,有大约 30 个方法并在 30 个类中实现。

我想将@Override 添加到每个实现中,但我不想手动完成。

IntelliJ 如何帮助我?

界面如下:

public interface PreviewObjectTests {
    void testGetName();
    void testGetType();
    //... 30 similar methods
}

实现代码:

public class PreviewObjectAccountTest implements PreviewObjectTests {

    //I want to add @Override here!
    @Test public void testGetName() {
        assertThat(...);
    }

    //I want to add @Override here!
    @Test public void testGetType() {
        assertThat(...);
    }

    //...30 similar methods 

}

【问题讨论】:

  • eclipse中容易做,不了解intellij。
  • 那么,您将如何在 Eclipse 中执行此操作?了解这个问题的读者可能会有所帮助:)

标签: java annotations intellij-idea


【解决方案1】:

Alt+Enter意图轻松完成,然后按右箭头进入子菜单:

【讨论】:

  • 实际上我的文件中没有得到这个意图建议。我名单上的唯一意图是Expand to '@test()'。您提到的意图是否仅适用于生产类文件,而不适用于测试?
  • 确保项目语言级别设置为 1.6 或更高。
  • 语言级别设置"level 6.0 - @Override in interfaces"。 (我使用 IntelliJ 11.01 和 java 1.6.0_27)。
  • 您是否在设置 | 中启用了 Missing @Override 注释检查?检查?您是否像我的屏幕截图一样突出显示方法名称?当插入符号位于突出显示的代码上时,按 Alt+Enter。我已经验证它也适用于测试类。您能否分享一个示例项目,以便我们可以尝试重现缺少意图操作的问题?
  • 我缺少@Override 注释
【解决方案2】:

对于 IntelliJ:

  1. 检查您是否在首选项 -> 项目设置 -> 检查 -> 继承问题中选中了“缺少 @Override 注释”。
  2. 使用分析 -> 检查代码
  3. 查找继承问题 ->“检查配置文件的结果”窗口中缺少 @Override 注释。
  4. 应用修复“添加@Override 注释”

【讨论】:

  • 它在我的 Intellij 版本中的“类结构”而不是“继承问题”中,但您可以在“检查”屏幕上搜索“覆盖”并轻松找到“缺少 @Overrid 注释”。
【解决方案3】:

对于 Eclipse(在 Mars.2 上测试):

窗口/首选项(或项目属性) Java / 编译器 错误/警告 注释 缺少 @Override 注释 - 设置为错误(或警告)

重建工作区后,在标记视图中,右键单击错误之一,快速修复 (Ctrl+1),所有错误都会出现。全选并应用修复。

这对我正确注释数百个类很有用...

【讨论】:

    【解决方案4】:

    我找到了一种使用简单查找/替换工具的方法。

    1. 首先我更改了一个方法名称,以促使所有实现该接口的文件发生更改
    2. 然后我创建了一个简单的查找/替换来仅查看已更改的文件。

    这适用于我的特殊情况,因为类文件中实际上没有任何其他方法。如果我在属于其他接口的文件中有很多方法,我会假设这会更疯狂

    【讨论】:

    • -1(我不能这样做:))为此进行搜索/替换是个坏主意。
    • 我同意这是一个坏主意,但没有更好的主意。幸运的是,由于我组织单元测试文件的方式,这对我有用。
    • 文本替换不好,因为你需要检查哪些方法实际上是覆盖的,哪些不是。而且由于这个特性是内置在 Java IDE 中的,我别无选择,只能投反对票:'(
    【解决方案5】:

    它不是日食或想法特定的。它的编译器特定和您遵守的合规性。 在日食中它的 1.6 或更高。 并且在想法上,我相信它适用于 1.5 或更高版本。

    在上述情况下,它将由各自的 IDE 自动检查。

    【讨论】:

    • 对不起,负面的伙伴。问题是关于自动修复:“我想在每个实现中添加@Override,但我不想手动完成。”
    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2018-07-29
    • 2021-08-21
    相关资源
    最近更新 更多