我很好奇为什么我们有@Overrides注释,但是没有类似的接口习惯用法(例如@Implements或@Implementation)。它似乎是一个有用的功能,因为您可能要求您实现的接口是注释的值。
这是一个有意识的决定还是只是一个被忽视的决定?
我发现了这个question,但它似乎没有讨论为什么没有创建单独的注释。
答案 0 :(得分:4)
在大多数情况下,您不需要这样的注释,因为如果您不实现该接口,您将收到编译时错误。唯一的情况是该类是abstract
。在那里它可能是有用的。但是你再次拥有@Override
,所以一个新的注释可能没用。
答案 1 :(得分:0)
我认为当您实施interface
(例如public class AClass implements AInterface
)时,您正在使用该关键字implements
,这足以让您知道即使您正在使用{{1}这个方法实际上是一个抽象方法的实现。
答案 2 :(得分:0)
@Override
注释仅仅是编译器的标记。它的存在使得编译器可以生成警告,其中开发人员的意图可能会混淆。 javadoc的内容如下:
表示方法声明旨在覆盖方法 在超类中声明。如果方法用此注释 注释类型但不覆盖超类方法,编译器 需要生成错误消息。
任何@Implements
注释都可能只提供相同的功能,因此其实用程序仅限于编译器。