我使用单个方法创建了以下界面:
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()必须覆盖或实现超类型方法),快速修复为“Remove @Override annotation”
我还检查了编译器配置。它只有1.8。
请让我知道为什么会出现错误或帮助我解决问题。提前谢谢。
答案 0 :(得分:4)
请让我知道为什么会出现错误或帮我解决?
当没有生成最新的类文件时会发生这种情况,即覆盖方法签名不匹配,因为类文件仍然是指旧文件。因此,请确保正确构建项目并生成最新的类文件。
在eclipse中,项目(在顶部栏) - >清理并检查是否正在生成最新的类文件(在project/target/classes
文件夹或您配置的任何其他文件夹中)。另外,请确保项目中没有其他错误可能会阻止生成类文件。您还可以查看here关于无法构建项目的原因。
答案 1 :(得分:2)
您在Java Build Path"上使用了执行环境中的合规性。选中复选框。您需要确保在Build Path定义中选择了1.8 JRE。 1.5 JRE会产生此错误。
答案 2 :(得分:1)
看起来您的IDE Eclipse在其Java Build Path中配置了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编译器JDK合规性级别是否仍为1.8,然后执行干净的构建。这应该可以解决问题。
答案 3 :(得分:0)
我遇到了类似的问题,尝试了这里提到的所有解决方案,但没有任何问题对我有用。最后,我通过将JRE System Library
选项更改为指向Alternate JRE
的{{1}}来解决了此错误。
谢谢!
答案 4 :(得分:0)
右键单击项目->验证
然后选择要validate
的文件。
对我有用。
答案 5 :(得分:0)
选择出现错误的文件,右键单击它以进行验证