我知道它应该有效,但事实并非如此。我有一个类继承定义如下:
public class VisitManagementForm extends FormWithTitle implements Property.ValueChangeListener {
现在它只允许覆盖extends中的方法,它没有,甚至不允许我从Property.ValueChangeListener实现/覆盖方法。这是为什么? 我用扩展切换了工具的位置,然后只有工具工作,扩展似乎不可见。
我最近将项目转为Maven,Maven是否可能导致这种疯狂?也许我需要指定一些东西来允许它吗?或者我在这里错过了一些东西?
Property.ValueChangeListener应该强制实现这样的方法:
@Override
public void valueChange(ValueChangeEvent event) {
// TODO Auto-generated method stub
}
但是现在我得到它需要覆盖或实现超类型方法的错误...
编辑:我正在使用Java 1.6进行项目。
编辑:如果我尝试实现其他东西(同时保留扩展),它建议我实现方法,但如果我实现ValueChangeListener它不建议我实现任何东西,但如果你然后删除扩展并离开只实现ValueChangeListener,然后建议再次实现它的方法。但只要我保留扩展,我似乎得到了上面提到的错误。答案 0 :(得分:3)
请注意,您无法将@Override注释添加到在Java 5中实现接口的方法 - 它会生成错误。它在Java 6中是允许的
答案 1 :(得分:2)
您正在做的是非法多重继承。查看this example from of Java Language specification
答案 2 :(得分:0)
如果这是在切换到maven之前有效的代码,原因可能是maven编译器插件默认将源版本设置为1.5
,这意味着,正如另一个答案中已经提到的那样,你不能使用@Override
用于接口方法。