如果我们有@Override,为什么没有@Implementation或@ Implements`?

时间:2011-11-30 14:51:47

标签: java interface annotations design-decisions

我很好奇为什么我们有@Overrides注释,但是没有类似的接口习惯用法(例如@Implements或@Implementation)。它似乎是一个有用的功能,因为您可能要求您实现的接口是注释的值。

这是一个有意识的决定还是只是一个被忽视的决定?

我发现了这个question,但它似乎没有讨论为什么没有创建单独的注释。

3 个答案:

答案 0 :(得分:4)

在大多数情况下,您不需要这样的注释,因为如果您不实现该接口,您将收到编译时错误。唯一的情况是该类是abstract。在那里它可能是有用的。但是你再次拥有@Override,所以一个新的注释可能没用。

答案 1 :(得分:0)

我认为当您实施interface(例如public class AClass implements AInterface)时,您正在使用该关键字implements,这足以让您知道即使您正在使用{{1}这个方法实际上是一个抽象方法的实现。

答案 2 :(得分:0)

@Override注释仅仅是编译器的标记。它的存在使得编译器可以生成警告,其中开发人员的意图可能会混淆。 javadoc的内容如下:

  

表示方法声明旨在覆盖方法   在超类中声明。如果方法用此注释   注释类型但不覆盖超类方法,编译器   需要生成错误消息。

任何@Implements注释都可能只提供相同的功能,因此其实用程序仅限于编译器。