在某些时候java.lang.Override
开始可用于接口中声明的方法的实现。我很确定有一段时间它只适用于超类中定义的方法的覆盖。
如何找出此更改发生的时间(即哪个版本)?
答案 0 :(得分:12)
对从接口实现但未从超类重写的方法使用@Override
注释是Java 6中的一项新功能。请参阅@Override specification changes in Java 6:
Java 5和Java 6之间的更改 @Override的规范有 已经成型。在Java 6中,它是可能的 将@Override注释添加到 实现方法的方法 Java中不允许的接口 5。
我注意到朋友的不同之处 告诉我,他必须删除所有的 @Override注释来制作他的Java 6用Java 5编译项目。
有趣的是,有 没有关于此更改的文档。 @Override的API规范是 在两个Java中完全相同 版本。我发现这是 被Sun开发者遗忘了。 Peter Ahé, a former developer at Sun, calls it the @Override Snafu
答案 1 :(得分:2)
我不知道你是怎么发现的,但它发生在5到6之间(即它在5中被禁止但在6中被接受。)
答案 2 :(得分:1)
您无法“正式”查找,因为someone at Sun messed up并且在更改实施时未更新java.lang.Override
的API文档中的规范,并且显然在不允许发布后更改规范。