方法覆盖

时间:2010-03-22 09:35:58

标签: java

你可以在不使用注释的情况下覆盖java中的方法吗?因为如果使用JRE6,eclipse不支持它,您需要切换回5以使用@Override注释。如果删除注释,是否会覆盖此方法?

@Override public String toString() {
    return name + " [" + genre + "]";
    }

3 个答案:

答案 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下的内容的方法是

  1. 转到Eclipse中Java项目的 Properties
  2. 然后,转到 Java编译器菜单
  3. 检查编译器合规性级别是否设置为 1.5 或更高。
  4. 修改

    关于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注释。但是,如果您这样做并且该方法无法覆盖超类中的方法,则编译器将返回错误。