Can you override method in java
without using annotations?
是的,不需要@Override注释来覆盖方法.
只是通过使用具有祖先类的相同方法签名的方法定义的行为足以覆盖方法.
@Override注释只是提醒编译器说方法定义旨在覆盖方法.
如果具有@Override的方法实际上没有覆盖方法,则编译器将抛出编译器错误 – 该注释用作额外的编译时检查,以查看方法定义是否确实覆盖了方法.
Because eclipse doesn’t support it if
you use JRE6, you need to switch back
to 5 to use @Override annotation.
我碰巧使用Eclipse定位Java 6,并且能够使用@Override注释,所以我不太确定是什么导致这种情况. Java 5支持注释,并且自Java 6以来已经更紧密地集成到该语言中.
编辑
从Andreas_D的评论到问题:
smile – this just indicates, that the
current source level for your project
is < 1.5. This setting is pretty
independant from the JRE, you actually
can use JRE 1.6 together with source
level 1.4 – and I guess, that’s what
happened.
这肯定是编译错误发生的一种方式!
检查“编译器合规性级别”是否设置为Java 5下的内容的方法是,
>转到Eclipse中Java项目的属性
>然后,转到Java Compiler菜单
>检查编译器合规性级别是否设置为1.5或更高.
编辑
关于Gandalf StormCrow的截图,似乎编译器合规性级别设置为低于JDK 1.5.单击“更改项目合规性”和“JRE到1.5快速修复”应该可以修复当前情况.
问题是,Java 5中引入了注释.
似乎Eclipse中的Java项目当前已设置,因此源代码只能包含在Java 5之前引入的功能,因此不允许使用注释.
修复这种情况的方法是告诉Eclipse,通过将编译器合规性级别设置为1.5或更高,可以使用Java 5的功能.