我不明白为什么Java注解中没有继承,就像Java类一样。我认为这将非常有用。
例如:我想知道给定的注释是否是验证器。通过继承,我可以反射性地浏览超类以了解此注释是否扩展了ValidatorAnnotation. 否则,我怎么能做到这一点?
ValidatorAnnotation
那么,谁能给我这个设计决定的理由?
关于它不是这样设计的原因,您可以在JSR 175设计常见问题解答中找到答案,其中说:
为什么不支持注释子类型(一种注释类型扩展另一种)? 它使注释类型系统复杂化,并使得编写“特定工具”变得更加困难。 ㈥ “特定工具”“查询任意外部程序的已知注释类型的程序。例如,存根生成器就属于这一类。这些程序将读取带注释的类而不将它们加载到虚拟机中,但会加载注释接口。
为什么不支持注释子类型(一种注释类型扩展另一种)?
它使注释类型系统复杂化,并使得编写“特定工具”变得更加困难。
㈥
“特定工具”“查询任意外部程序的已知注释类型的程序。例如,存根生成器就属于这一类。这些程序将读取带注释的类而不将它们加载到虚拟机中,但会加载注释接口。
所以,是的,我想,原因只是 KISS。无论如何,似乎这个问题(以及许多其他问题)正在作为JSR 308的一部分进行研究,您甚至可以找到Mathias Ricken已经开发的具有此功能的替代编译器。