Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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类能否自动继承注释?_Java_Web Services_Annotations_Jax Ws - Fatal编程技术网

实现接口的Java类能否自动继承注释?

实现接口的Java类能否自动继承注释?,java,web-services,annotations,jax-ws,Java,Web Services,Annotations,Jax Ws,假设我有一个带有一些注释的接口,例如: @SpecialClass 公共接口IFoo{/*…*/} 假设我创建了一个实现接口的类: public类Foo实现IFoo{/*…*/} 类Foo是否可能以某种方式从IFoo及其成员“继承”或自动复制所有或部分注释(例如,自动将Foo注释为@SpecialClass等) 这对于实现web服务类(例如那些由JAX-WS“wsimport”工具生成的类)来说是很方便的,只需实现它们带注释的接口,而不必显式地将接口注释复制到实现类(例如javax.jws.

假设我有一个带有一些注释的接口,例如:

@SpecialClass
公共接口IFoo{/*…*/}
假设我创建了一个实现接口的类:

public类Foo实现IFoo{/*…*/}
Foo
是否可能以某种方式从
IFoo
及其成员“继承”或自动复制所有或部分注释(例如,自动将
Foo
注释为
@SpecialClass
等)


这对于实现web服务类(例如那些由JAX-WS“wsimport”工具生成的类)来说是很方便的,只需实现它们带注释的接口,而不必显式地将接口注释复制到实现类(例如
javax.jws.WebService
javax.xml.WS.RequestWrapper
,等等).

编辑:我在这里留下这个答案供一般信息和未来的读者参考,但Andreas指出了Javadoc中我遗漏的一个重要部分:

请注意,如果注释类型用于注释类以外的任何内容,则此元注释类型无效。还要注意,这个元注释只会导致注释从超类继承;已实现接口上的注释无效

换句话说,在这种情况下,这是没有帮助的。当然,只有当您能够控制注释本身时,它才有用

我怀疑真正的答案是,您只需在任何地方应用注释。如果您担心忘记一个类,您可能需要编写一个单元测试来查找所有类(我意识到说起来容易做起来难),并检查实现给定接口的所有类是否都存在注释


您是否尝试将注释应用于
SpecialClass
注释本身

指示注释类型是自动继承的。如果注释类型声明中存在继承的元注释,并且用户在类声明中查询注释类型,而该类声明中没有该类型的注释,则该类的超类将自动查询注释类型。将重复此过程,直到找到此类型的注释,或到达类层次结构(对象)的顶部。如果没有超类具有此类型的注释,那么查询将指示所讨论的类没有此类注释


这听起来确实是你想要的。

这是一个表演的障碍吗?:在实现的接口上的注释没有效果(从javaDoc中)很好的发现,但是假设我不控制注释的来源(例如
javax.jws.WebService
)?@maerics:在这种情况下,我认为你运气不好。哇,注释上的注释。老兄,诸如此类。很好的问题和答案。