为什么无法在Java中扩展注释?

sinuhepop:

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

例如:我想知道给定的注释是否为验证者。通过继承,我可以自反地浏览超类,以了解此注释是否扩展了ValidatorAnnotation否则,我该如何实现?

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

pedromarce:

关于未采用这种方式进行设计的原因,您可以在JSR 175设计常见问题解答中找到答案,其中说:

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我无法从已加载的Java类中检测注释?

为什么注释在Cartopy中无法正常工作?

为什么MappedByteBuffer无法扩展?

为什么DTD无法扩展?

java扩展静态方法,无法编译,为什么?

为什么JML没有在Java中实现为注释?

为什么Eclipse中Java注释的颜色不同?

Java中的注释为什么要创建类类型引用?

为什么我的Navbar无法在Wordpress中扩展?

为什么ssh无法在.ssh / config中扩展%h变量?

为什么在MutableCollection的扩展中无法使用sort(by :)?

为什么我的ios 10中的uilabel无法扩展?

TYPO3扩展:为什么在此注释栏中需要符号?

为什么LinkedList和arraylist在Java中扩展AbstractList?

如何在Java中扩展注释?

为什么在代码中添加多行注释使其无法编译

为什么我无法使用扩展功能?

为什么numpy的效率无法扩展

为什么CSS中的注释很重要?

HTML注释<!-是否在JavaScript中充当单行注释,为什么?

为什么以下注释在Java中合法但在Groovy中不合法?

为什么我们在TypeScript中说装饰器?为什么不注释(如Java)或属性(如C#)?

为什么允许在带有某些Unicode字符的注释中执行Java代码?

Spring AOP:为什么@After注释在Java,AspectJ中在@AfterThrowing之后执行?

为什么用Jackson的@JsonFormat注释的java.sql.Timestamp字段中的小时错误?

为什么我的 Chrome 扩展程序无法点击 Google 文档中的“新评论”按钮?

为什么我的序列扩展名中无法获得类型特定的信息?

为什么在使用 IEnumerator 类列表时无法在扩展方法中访问类方法

为什么我无法从Python调用的C扩展名中打开/读取txt文件?