我正在探索批注,并得出了一些批注似乎在其中具有层次结构的观点。
我正在使用注释在Cards的后台生成代码。卡的类型不同(因此代码和注释也不同),但是其中某些特定的元素(例如名称)是相同的。
@Target(value = {ElementType.TYPE}) public @interface Move extends Page{ String method1(); String method2(); }
这就是常见的注释:
@Target(value = {ElementType.TYPE}) public @interface Page{ String method3(); }
在上面的示例中,我希望Move可以继承method3,但会收到一条警告,指出扩展对注释无效。我试图让Annotation扩展一个通用的基数,但这是行不通的。那有可能还是仅仅是设计问题?
抱歉不行。显然,它与读取类上的注释而不会完全加载它们的程序有关。请参见为什么无法在Java中扩展注释?
但是,如果类型注解是,则类型的确会继承其超类的注解@Inherited。
@Inherited
另外,除非需要这些方法进行交互,否则可以将注解堆叠在类上:
@Move @Page public class myAwesomeClass {}
有什么原因对您不起作用吗?