Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java中没有@Implements注释?_Java_Annotations - Fatal编程技术网

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

为什么Java中没有@Implements注释?,java,annotations,Java,Annotations,我发现@Override注释在重写派生类中的一些超类方法时非常有用。基本上,编译器很早就检测到我程序中的缺陷,这总是一件好事。但是为什么Java中没有@Implements注释呢?因为对于接口定义的方法也使用@Override (是的,您正在“实现”而不是“覆盖”…但是@Override用于两者)要实现一个接口,关键字已经存在:implements。但对于override,不存在这样的关键字@Override不是一个关键字,但其工作原理类似。要实现一个接口,我们使用implements,如果该接

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

因为对于接口定义的方法也使用
@Override


(是的,您正在“实现”而不是“覆盖”…但是
@Override
用于两者)

要实现一个接口,关键字已经存在:
implements
。但对于override,不存在这样的关键字
@Override
不是一个关键字,但其工作原理类似。

要实现一个接口,我们使用
implements
,如果该接口中存在任何方法,则我们重写这些方法以提供实现


因此只有
@Override
注释,因为在这两种情况下(类或接口),我们总是重写。

因为Java 6可以在类方法上使用@Override来实现接口中定义的方法

@Override
是一种形式;其实并不需要。如果没有注释,编译器不会失败。然而,当你实现一个接口时……如果你没有实现该接口中定义的每个方法,编译器会尖叫出来。@Makoto-我怀疑他指的是他的IDE,而不是编译器。这就是说,如果你要做
javac-Xlint:overrides
(或者仅仅是
-Xlint
),它会告诉你,所以可能他正在做。(我应该说,如果你在重写时出错,会告诉你)。@RyanStewart-这是真的,但是,由于我们已经发布了6年,事实上在EOL for 6上,我真的已经停止了对任何东西的限定,除非它是6对7:)然而,不幸的是,在去年(上次评论发表4年后),我不得不将代码移植到Java 5,以便它可以在Oracle 11中运行。老爪哇人永远不会死,他们只是躲起来等待不小心的人。