Java 缺少批注:@重写未由Eclipse IDE中的编译器显示

Java 缺少批注:@重写未由Eclipse IDE中的编译器显示,java,object,Java,Object,这有点奇怪!但是,当我为我的模态类实现集合并使用EclipseIDE添加未实现的方法时,它不会在通过单击“addunimplementedmethods”生成的任何方法中显示@Override 当我单击“添加实现的方法”时,会发生以下情况: public class MadeItACollection implements Collection{ public int size() { // TODO Auto-generated method stub return 0;

这有点奇怪!但是,当我为我的模态类实现集合并使用EclipseIDE添加未实现的方法时,它不会在通过单击“addunimplementedmethods”生成的任何方法中显示@Override

当我单击“添加实现的方法”时,会发生以下情况:

public class MadeItACollection implements Collection{

 public int size() {
    // TODO Auto-generated method stub
    return 0;
}

public boolean isEmpty() {
    // TODO Auto-generated method stub
    return false;
}
.
.
.
.
}

我没有看到任何@Override。我正在用Java8编译代码库。我是否遗漏了一些明显的东西?

正如人们的评论所暗示的,这是Eclipse中的一个代码风格选项


您可以在Preferences->Java->Code Style下启用它——确保选中了“Add@Override annotation for new overriding methods”;之后,您还可以通过直接在下面的链接为接口方法的实现添加它。(您还可以在这些菜单中启用自动添加注释作为清理或保存操作。)

在实现接口时,不严格要求使用
@Override
注释,主要是因为您没有覆盖任何超类实现,而是实际实现了接口声明的方法。所以可能需要一个
@Implements
注释,但这是一个完全不同的话题

但是,强烈建议您在这些方法上仍然使用
@Override
注释,因为:

  • 它明确地向任何阅读代码的人传达它是一个重写方法
  • 如果你拼错了你想重写的方法,它会告诉你这个方法是否真的可以重写一个现有的超级方法,这有助于避免在编译时抛出一个错误
  • 大多数IDE实际上会帮助您自动添加:

    Intellij Idea:

    导航到

    文件=>设置=>编辑器=>代码样式=>Java

    然后滚动到
    覆盖方法签名
    ,您应该会找到
    插入@Override annotation
    ,确保选中此项

    下面是关于此设置选项的说明:

    插入@Override注释:选中此复选框可使IntelliJ IDEA自动插入@Override注释

    Eclipse:

    导航到:

    窗口=>Preferences=>Java=>CodeStyle

    并查找新覆盖方法的
    Add@Override注释
    ,确保已选中该注释

    您还可以通过导航到以下位置将其添加为
    保存操作

    窗口=>首选项=>Java=>编辑器=>保存操作

    并确保已选择
    在保存时执行所选操作
    ,并且已选择
    其他操作
    ,并确保已配置
    添加缺少的注释


    问题出在哪里
    @Override
    不是必需的,显然IDE配置为不自动添加它这是eclipse中的设置。注释根本就没有生成。看看您在Eclipse中使用的是哪个JRE版本。我认为只有在1.6以上(不确定确切版本)
    @Override
    是编译注释时才会显示警告,这意味着在执行时不需要,但如果不使用与重写方法相同的模板,它将停止编译。您重写了toString(),但没有将其公开,而是将其公开protected@Bastida这对这个问题有什么影响?酷。谢谢:)
    public class MadeItACollection implements Collection{
    
     public int size() {
        // TODO Auto-generated method stub
        return 0;
    }
    
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        return false;
    }
    .
    .
    .
    .
    }