为什么不能在 Java 中扩展注解?
我不明白为什么Java注解中没有继承,就像Java类一样。我认为这将非常有用。
例如:我想知道给定的注释是否是验证器。通过继承,我可以反射性地浏览超类以了解此注释是否扩展了ValidatorAnnotation
.
否则,我怎么能做到这一点?
那么,谁能给我这个设计决定的理由?
-
关于它不是这样设计的原因,您可以在JSR 175设计常见问题解答中找到答案,其中说:
为什么不支持注释子类型(一种注释类型扩展另一种)?
它使注释类型系统复杂化,并使得编写“特定工具”变得更加困难。
㈥
“特定工具”“查询任意外部程序的已知注释类型的程序。例如,存根生成器就属于这一类。这些程序将读取带注释的类而不将它们加载到虚拟机中,但会加载注释接口。
所以,是的,我想,原因只是 KISS。无论如何,似乎这个问题(以及许多其他问题)正在作为JSR
308的一部分进行研究,您甚至可以找到Mathias
Ricken已经开发的具有此功能的替代编译器。
-
为什么我不能在Python中扩展布尔值?
2021-01-29 关注 0 浏览84 1答案
-
为什么我不能在Java中删除空格?
2021-01-29 关注 0 浏览118 1答案
-
Java:为什么我不能在Comparator中抛出异常?
2021-01-30 关注 0 浏览78 1答案
-
为什么我不能在Java中“静态导入”“等于”方法?
2021-01-30 关注 0 浏览85 1答案
-
为什么不能在Java中将Integer转换为String?
2021-01-31 关注 0 浏览94 1答案
-
为什么不能在 Java 中将类声明为静态?
2022-03-22 关注 0 浏览45 1答案
-
为什么我不能在Java的内部类中创建枚举?
2021-01-30 关注 0 浏览121 1答案
-
为什么我不能在Java 8 lambda表达式中引发异常?
2021-01-31 关注 0 浏览125 1答案
-
为什么不能在Java中将类声明为静态类?
2021-02-02 关注 0 浏览85 1答案
-
为什么不能在Java接口中定义静态方法?
2021-02-02 关注 0 浏览155 1答案