删除 Java8 中的 @Override 注释错误

Remove @Override annotation error in Java8

我用一个方法创建了以下接口:

public interface Greeting {

   public void perform();
}

我试图将接口实例传递给 greet() 方法。

public class Greeter {

  public void greet(Greeting greeting){
    greeting.perform();
 }

 public static void main(String[] args) {       
    Greeter greeter=new Greeter();
 }
}

我创建了一个问候界面的实现:

public class HelloWorldGreeting implements Greeting {

 @Override
 public void perform() {
    System.out.println("Hello World");

 }
}

我收到错误(HelloWorldGreeting 类型的方法 perform() 必须重写或实现超类型方法)并快速修复 "Remove @Override annotation"

我还检查了编译器配置。只有 1.8。

请告诉我为什么会出现错误或帮助我修复它。提前致谢。

您已选中 "use compliance from the execution environment on Java Build Path" 复选框。您需要确保在构建路径定义中选择了 1.8 JRE。 1.5 JRE 会产生这个错误。

Please let me know why is the error coming or help me fix it?

当未生成最新的 class 文件时可能会发生这种情况 即覆盖方法签名不匹配,因为 class 文件仍在指旧。因此,请确保正确构建项目并生成最新的 class 文件。

在 eclipse 中,项目(在顶部栏)-> 清理 并检查是否正在生成最新的 class 文件(在 project/target/classes文件夹或您配置的任何其他文件夹)。此外,确保项目中没有其他可能阻止 class 文件生成的错误。您还可以查看 here 无法构建项目的原因。

看起来您的 IDE Eclipse 在其 Java 构建路径中配置了 1.6 之前的 JRE 系统库。要纠正此问题,您需要配置 Workspace 默认 JRE (JDK1.8.0_xx) 的系统库,而不是 1.5 系统库。为此,您应该转到

项目>构建路径>配置构建路径>Java构建路径>库选项卡

这里,验证JRE系统库。这很可能是 1.5,因为发生此错误。 现在,点击添加库 Select 库类型 -> JRE 系统库 -> 下一步

Select 工作区默认 JRE (jdk 1.8.0_xx) 假设您已经安装了它。否则 select 系统上安装了其他 jre。 单击完成。 您的 JRE 1.8 应该添加到 JRE 系统库中。 现在从构建路径中删除 JRE 1.5 并单击 Apply。 检查您的 Java 编译器 JDK 合规级别仍然是 1.8,然后进行干净的构建。这应该可以解决问题。

我遇到了类似的问题,尝试了这里提到的所有解决方案,但没有任何效果。所以最后我通过将 JRE System Library 选项更改为 Alternate JRE 指向 jdk1.8.x_x.

解决了这个错误

谢谢!

right click on the project -> validate

然后select文件要validate

对我有用。

select 您出错的那个文件,右击它去验证