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

发布于 2022-07-28 23:16:28

我不明白为什么Java注解中没有继承,就像Java类一样。我认为这将非常有用。

例如:我想知道给定的注释是否是验证器。通过继承,我可以反射性地浏览超类以了解此注释是否扩展了ValidatorAnnotation.
否则,我怎么能做到这一点?

那么,谁能给我这个设计决定的理由?

关注者
0
被浏览
10
1 个回答
  • 面试哥
    面试哥 2022-07-28
    为面试而生,有面试问题,就找面试哥。

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

    为什么不支持注释子类型(一种注释类型扩展另一种)?

    它使注释类型系统复杂化,并使得编写“特定工具”变得更加困难。

    “特定工具”“查询任意外部程序的已知注释类型的程序。例如,存根生成器就属于这一类。这些程序将读取带注释的类而不将它们加载到虚拟机中,但会加载注释接口。

    所以,是的,我想,原因只是 KISS。无论如何,似乎这个问题(以及许多其他问题)正在作为JSR
    308
    的一部分进行研究,您甚至可以找到Mathias
    Ricken
    已经开发的具有此功能的替代编译器。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看