为什么不能在Java中扩展注释?

问题:

我不明白为什么Java注释中没有继承,就像Java类一样。我认为这将是非常有用的。
例如:我想知道一个给定的注释是否是一个验证器。通过继承,我可以反思地浏览超类,以了解这个注释是否扩展了一个ValidatorAnnotation。否则,我该如何实现呢?
那么任何人都可以给我这个设计决策的理由?

回答:

关于为什么它不是这样设计的原因,你可以在JSR 175设计常见问题解答中找到答案:

为什么不支持注解子类型(其中一个注释类型扩展为另一个)?
注释类型系统复杂化,使写入“特定工具”变得更加困难。
“具体工具” – 查询任意外部程序的已知注释类型的程序。例如,存根发生器属于这一类。这些程序将读取注释类而不将它们加载到虚拟机中,但会加载注释接口。

所以,是的,我猜,原因是它只是KISS。无论如何,似乎这个问题(还有很多其他的)正在被视为JSR 308的一部分,你甚至可以找到一个替代的编译器,这个功能已经由Mathias Ricken开发

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why is not possible to extend annotations in Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

58 + = 62