4

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

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();
 }
}

我创建了一个 Greeting Interface 的实现:

public class HelloWorldGreeting implements Greeting {

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

 }
}

我收到错误(HelloWorldGreeting 类型的方法 perform() 必须覆盖或实现超类型方法),快速修复为“删除 @Override 注释”

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

在此处输入图像描述

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

4

6 回答 6

6

请让我知道为什么会出现错误或帮助我解决它?

这可能发生在没有生成最新的类文件时,即覆盖方法签名不匹配,因为类文件仍然引用旧的。因此,请确保正确构建项目并生成最新的类文件。

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

于 2017-03-26T06:50:32.673 回答
5

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

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

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

假设您已安装它,请选择 Workspace 默认 JRE (jdk 1.8.0_xx)。否则选择系统上其他已安装的 jre。单击完成。 在此处输入图像描述 您的 JRE 1.8 应该被添加到 JRE 系统库中。现在从构建路径中删除 JRE 1.5 并单击 Apply。检查您的 Java Compiler JDK 合规级别是否仍为 1.8,然后进行干净的构建。这应该可以解决问题。

于 2017-08-15T20:51:48.543 回答
3

您已选中“使用 Java 构建路径上的执行环境的合规性”复选框。您需要确保在构建路径定义中选择了 1.8 JRE。1.5 JRE 会产生这个错误。

于 2017-03-26T06:32:46.107 回答
0

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

谢谢!

版本错误

于 2018-06-18T10:38:34.023 回答
0

右键单击项目->验证

然后选择想要的文件validate

它对我有用。

于 2020-05-29T15:10:21.373 回答
0

选择您有错误的那个文件,右键单击它去验证

于 2021-06-03T19:33:37.450 回答