在为实现接口的类使用@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;
}
&#13;
答案 0 :(得分:0)
如果您正在使用eclipse,则删除子类中的方法减速(StringDictionary),然后编译器将要求您在超类中实现未实现的方法。然后在eclipse的帮助下使用选项Add unimplemented method
。
希望这样能解决你的问题。
答案 1 :(得分:0)
我已经完全尝试了你的代码 - 完全没问题。 JDK1.6应该足够了,因为在JDK1.6中添加了@Override
接口。从我在问题中看到的所有内容来看,您的代码是正确的,应该可以正常工作。
我建议重新启动Eclipse或更改方法然后将其更改回来,似乎Eclipse中的某些内容与您的代码不同步。
答案 2 :(得分:0)
还有一个建议,删除eclipse为你生成的类文件,对文件进行一些编辑(如注释),保存并让eclipse再次为你构建。
答案 3 :(得分:0)
我认为已经解决了。之前我只修改了工作区属性,但是使用了带有SVN的maven项目。 Maven在内部设置每个项目的属性,以便在每次更新时使用“Project Specific 1.5 java compliance”。
我更改了每个项目以使用工作区JDK合规性并删除了SVN项目中的项目特定设置,以防止在更新代码后出现未来错误。
感谢。