假设我有一个带有一些注释的界面,例如:
@SpecialClass
public interface IFoo { /* ... */ }
假设我创建了一个实现接口的类:
public class Foo implements IFoo { /* ... */ }
类Foo
是否有可能以某种方式“继承”或自动复制IFoo
及其成员的全部或部分注释(例如自动注释Foo
为{{1}等等)?
这可以方便实现Web服务类(例如由JAX-WS“wsimport”工具生成的那些),只需实现带注释的接口,而无需将接口注释复制到实现类(例如{{1} },@SpecialClass
等。)
答案 0 :(得分:6)
请注意,如果使用带注释的类型来注释除类之外的任何内容,则此元注释类型无效。另请注意,此元注释仅导致注释从超类继承;已实现的接口上的注释无效。
换句话说,在这种情况下不会提供帮助。当然,只有当你控制注释本身时它才有用。
我怀疑真正的答案是你只需要在任何地方应用注释。如果你担心忘记一个,你可能想编写一个单元测试,找到你所有的类(说起来容易做起来难,我意识到)并检查实现给定接口的所有类的注释是否存在。
您是否尝试将Inherited
注释应用于SpecialClass
注释本身?
表示自动继承注释类型。如果注释类型声明中存在Inherited元注释,并且用户在类声明上查询注释类型,并且类声明没有此类型的注释,则将自动查询类的超类以获取注释类型。将重复此过程,直到找到此类型的注释,或者到达类层次结构(对象)的顶部。如果没有超类具有此类型的注释,则查询将指示相关类没有此类注释。
肯定听起来就像你想要的那样。