【问题标题】:@Override compile error, implementing an interface (eclipse jre7 Windows)@Override 编译错误,实现一个接口(eclipse jre7 Windows)
【发布时间】:2014-12-19 04:57:50
【问题描述】:

在为实现接口的类使用 @Override 注释时,我在 Eclipse 中遇到编译错误。

JDK 合规级别设置为 1.7。

我用的是最新版的jdk7。

错误:“{classname} 类型的方法 {methodname} 必须覆盖超类方法”

public interface DataDictionary {
	
	public Map<String, ? > getAllEntries(String dictionaryName);
	...
        ...

}


public class StringDictionary implements DataDictionary {

        @Override // this generates the error
	public Map<String, ?> getAllEntries(String dictionaryName) {

		// some implementation

		return dataDictEntries;

	}

【问题讨论】:

  • 您没有正确覆盖。这就是我们所能说的。
  • 相关代码可以更容易地找到有用的答案。
  • 我正在实现一个接口,该项目按预期完美运行。只有当我添加 @Override 注释时它才会出错。
  • 您的超类是否具有与您要覆盖的签名相同的方法?能否请您发布您的代码?
  • 你确定Map在接口和实现它的类中指的是同一个类型吗?

标签: java eclipse


【解决方案1】:

我想已经解决了。早些时候,我只是修改了工作区属性,而是使用了带有 SVN 的 maven 项目。 Maven 在内部设置每个项目的属性以在每次更新时使用“项目特定 1.5 java 合规性”。

我更改了每个项目以使用工作区 JDK 合规性,并删除了 SVN 项目中的项目特定设置,以防止代码更新后将来出现错误。

谢谢。

【讨论】:

    【解决方案2】:

    如果您使用的是 Eclipse,则删除子类(StringDictionary)中的方法减速,然后编译器会要求您在超类中实现未实现的方法。然后在 Eclipse 的帮助下使用选项Add unimplemented method

    希望它能解决您的问题。

    【讨论】:

    • 我试过了,但是当 Eclipse 添加未实现的方法时,它不会添加'@Override'
    • @ArihantBanthia 我认为这是您的 eclipse 问题而不是 java 问题,最好尝试任何其他 eclipse 版本?
    【解决方案3】:

    我已经完全尝试过您的代码 - 完全没有问题。 JDK1.6 应该足够了,因为在 JDK1.6 中添加了接口的@Override。从我在问题中看到的所有内容来看,您的代码是正确的,应该可以正常工作。

    我建议重新启动 Eclipse 或更改方法然后将其更改回来,Eclipse 内部的某些内容似乎与您的代码不同步。

    【讨论】:

    • 我在 JDK 1.6 中编译了整个代码,这很好。但是当我使用 JDK 1.7 重新编译代码时,它给出了错误。
    【解决方案4】:

    还有一个建议,删除 eclipse 为你生成的类文件,对文件进行一些编辑(如 cmets),保存并让 eclipse 再次为你构建。

    【讨论】:

      猜你喜欢
      • 2011-06-27
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多