为什么Java中没有@Implements注解?

15

在我编写派生类时,覆盖一些超类方法时,我发现@Override注释非常有帮助。基本上,编译器可以早期检测到我的程序中的缺陷,这总是一件好事。但是为什么Java中没有@Implements注释呢?


@Override 是一种形式上的东西,它并不是真正必需的。如果你没有这个注解,编译器也不会失败。然而,当你实现一个接口时,如果你没有实现该接口中定义的每个方法,编译器就会报错。 - Makoto
@Makoto - 我猜他指的是他的集成开发环境而不是编译器。话虽如此,如果你执行javac -Xlint:overrides(或者只有-Xlint),它告诉你相关信息,所以也许他正在这么做。 - Brian Roach
(如果您在覆盖时出现错误,我会告诉您的,我必须这么说)。 - Brian Roach
4个回答

20
因为你也会将@Override用于接口定义的方法。(是的,你是在"实现"而不是"覆盖" ... 但@Override两种情况都适用)

2
@RyanStewart - 这是真的,但由于我们已经过了6年的发布时间,并且实际上在6的生命周期结束了,所以除非是6与7的区别,否则我已经停止对任何事情进行限定 :) - Brian Roach
1
然而,令人遗憾的是,在过去的一年中(距离上次评论已经过去4年),我不得不将代码移植到Java 5,以便它可以在Oracle 11内运行。旧版Java永远不会消失,它们只是潜伏等待着不谨慎的人。 - Devon_C_Miller

2
自Java 6起,您可以在实现接口定义的方法的类方法上使用 @Override。

1
为了实现一个接口,我们使用 implements 关键字,并且如果该接口中存在任何方法,则我们重写这些方法以提供实现。
因此只有 @Override 注解,因为在两种情况下(类或接口)我们都会进行重写。

0
实现一个接口时,已经存在关键字:implements。但是对于覆盖(override),没有这样的关键字。 @Override 不是关键字,但工作方式类似。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接