@Override导致涉及接口,抽象类和具体类的类层次结构的问题

时间:2010-06-01 13:12:18

标签: java

我的课程如下

public interface A {
    public void doSomething();
}
public abstract class B implements A {
    public void doOneMoreThing() {
        // Do one more thing
    }
}
public class C extends B {
    @Override                <---- Causes error
    public void doSomething() {
        // Do something
    }
}

有人可以告诉我,为什么这个@Override注释会导致错误?

由于 Nayn

2 个答案:

答案 0 :(得分:5)

检查您是否正在使用JDK 1.6,并且-source和-target参数(如果已定义)设置为1.6。 @Override的语义在Java 6中发生了变化。 在Java 5中,不允许@Override覆盖接口方法(仅限超类方法),但在Java 6(以及最新版本的JDK 5,从u21开始)中允许使用@Override

请参阅Why is javac failing on @Override annotation

答案 1 :(得分:2)

你应该使用

@覆盖

你写了@Overrides然后它不再起作用了;)