Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @重写会导致涉及接口、抽象类和具体类的类层次结构出现问题_Java - Fatal编程技术网

Java @重写会导致涉及接口、抽象类和具体类的类层次结构出现问题

Java @重写会导致涉及接口、抽象类和具体类的类层次结构出现问题,java,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 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
    }
}
公共接口A{
公共无效剂量();
}
公共抽象类B实现了{
公共空间毁灭性事件{
//再做一件事
}
}
公共类C扩展到B{
@覆盖您应该使用

@凌驾

您编写了@Overrides,然后它就不再工作了;)

您应该使用

@凌驾


您编写了@Overrides,然后它就不再工作了;)

检查您是否正在使用JDK 1.6,并且您的-source和-target参数(如果已定义)设置为1.6。在Java 6中@Override的语义已更改。 在Java5中,@Override不允许重写接口方法(仅限于超类方法),但在Java6中允许@Override(以及u21以后的JDK5的最新版本)


请参见

检查您是否正在使用JDK1.6,以及您的-source和-target参数(如果已定义)是否设置为1.6。Java 6中@Override的语义已更改。 在Java5中,@Override不允许重写接口方法(仅限于超类方法),但在Java6中允许@Override(以及u21以后的JDK5的最新版本)


请参见

我使用eclipse,因此在这方面没有犯任何错误。我理解@Override的含义。如果您使用java 1.6,则使用chcek。@接口的Override仅在1.6及以上版本可用。我使用eclipse,因此在这方面没有犯任何错误。我理解@Override的含义。如果您使用java 1.6,则使用chcek。@接口的Override是仅适用于1.6及以上版本。我使用的是1.5,谢谢。实际上,将source和target设置为1.5不会产生此错误。JDK 1.5的最新更新版本也不会产生此错误。只有JDK 1.5.Plus的较旧版本,如果
-source 1.6-target 1.6
起作用,则意味着他使用的是JDK 1.6或更高版本,在这种情况下,没有理由specify这些参数,会有吗?@Kevin Bourrillion-我使用JDK 6,并且经常不经意地将项目设置为-source/-target 1.5(例如,当将maven项目导入IDEA时,我的公共父pom将source定义为1.5)所以,这就是这种情况下的解决办法。我没有考虑到他实际上在使用JDK 1.5,这也不是我文章的目的。考虑到答案解决了OP的问题,并且答案在使用1.6的典型情况下是有效的,我认为你的否决票是严厉的。我知道关于否决票有不同的理念。我倾向于当我们不怕在不太好/有用的答案上使用这个概念时,相信它更有用(与此相反,答案必须是坏的)。但是,您的新编辑要好得多,所以再见downvote.Precision。我使用的是1.5,谢谢。实际上,将source和target设置为1.5不会产生此错误。JDK 1.5的最新更新版本也不会产生此错误。只有JDK 1.5.Plus的旧版本,如果
-source 1.6-target 1.6
起作用,这意味着他使用的是JDK 1.6或更高版本,其中如果没有理由指定这些参数,会吗?@Kevin Bourrillion-我使用JDK 6,经常会无意中将项目设置为-source/-target 1.5(例如,将maven项目导入IDEA时,我的公共父级pom将source定义为1.5)所以,这就是这种情况下的解决办法。我没有考虑到他实际上在使用JDK 1.5,这也不是我文章的目的。考虑到答案解决了OP的问题,并且答案在使用1.6的典型情况下是有效的,我认为你的否决票是严厉的。我知道关于否决票有不同的理念。我倾向于当我们不怕在不太好/有用的答案上使用这个概念时,相信它更有用(与此相反,答案必须是坏的)。但是,你的新编辑要好得多,所以再见下一票。