你可以在不使用注释的情况下覆盖java中的方法吗?因为如果使用JRE6,eclipse不支持它,您需要切换回5以使用@Override
注释。如果删除注释,是否会覆盖此方法?
@Override public String toString() {
return name + " [" + genre + "]";
}
答案 0 :(得分:8)
你可以覆盖java中的方法吗? 没有使用注释?
是的,@Override
注释不需要覆盖方法。
通过使用与祖先类相同的方法签名的方法定义的行为足以覆盖方法。
@Override
注释只是提醒编译器说方法定义旨在覆盖方法。
如果具有@Override
的方法实际上没有覆盖方法,则编译器将抛出编译器错误 - 该注释用作额外的编译时检查,以查看方法定义是否确实覆盖了方法
因为eclipse不支持它 你使用JRE6,你需要切换回来 到5使用@Override注释。
我碰巧使用Eclipse定位Java 6,并且能够使用@Override
注释,所以我不太确定是什么导致了这一点。 Java 5支持注释,并且自Java 6以来已经更紧密地集成到该语言中。
修改
从Andreas_D对问题的评论:
微笑 - 这只是表明,那个 您项目的当前源级别 是< 1.5。这个设置很漂亮 你实际上是独立于JRE的 可以将JRE 1.6与源一起使用 等级1.4 - 我猜,那是什么 发生了。
这肯定是编译错误可能发生的一种方式!
检查“编译器合规性级别”是否设置为Java 5下的内容的方法是
修改
关于Gandalf StormCrow的截图,似乎编译器合规性级别设置为低于JDK 1.5。点击更改项目合规性和JRE到1.5 快速修复应该可以解决当前的情况。
问题是,Java 5中引入了注释。
似乎Eclipse中的Java项目当前已设置,因此源代码只能包含在Java 5之前引入的功能,因此不允许使用注释。
解决这种情况的方法是告诉Eclipse,通过将编译器合规性级别设置为 1.5 或更高,可以使用Java 5的功能。
答案 1 :(得分:3)
@override只是一种确保如果更改合同(方法覆盖)的方法,则此方法将无法编译。没有它,它将被视为一种不同的功能。
至于JRE6,我不确定你的意思:支持注释。
试试jdk?
答案 2 :(得分:0)
您无需使用@Override
注释。但是,如果您这样做并且该方法无法覆盖超类中的方法,则编译器将返回错误。