![]() |
1
23
我从未在实践中使用过它,但您得到的是,您可以使用类来替换注释。
让我们创建一个人工示例。假设我们有一个文档生成器。上面写着
印刷品:
这样(生成器中只有两行额外的代码):
您不必对代码生成器进行太多更改,因为您可以使用类替换注释。 另一个例子是使用注释或XML作为配置的框架。您可能有一个处理注释的处理器。如果您使用XML作为配置,那么您可以生成实现注释的类的实例,并且您的处理器可以在不做任何更改的情况下对它们进行处理(当然还有其他方法可以达到同样的效果,但这是一种方法) |
![]() |
2
4
JAXBIntroductions 这是一个很好的例子:它允许使用XML文件配置JAXB注释。我们想到了两个主要用例:配置没有源代码访问权限的类,或者对一个类进行不同的配置。 一般来说,我认为动态实例化注释以将它们传递给框架通常是一个很好的用例。但是,如果您是这个框架的设计者,我当然会三思而后行。 |
![]() |
3
0
我在创建注释时使用它,并希望在省略注释时提供默认值,从而使其使用成为可选的。当您的库引入了一个新的注释并且希望库保持向后兼容时,可能会发生这种情况。
默认实现;
处理;
|
![]() |
4
-2
没有有效的用户案例-编译器只是容忍它,因为禁止它会非常混乱,编写编译器的人可能在非常罕见的情况下需要该工具。如果您需要对注释进行分类,请参阅本文以了解如何进行分类: Why is not possible to extend annotations in Java? 一个可怜的灵魂在你后面来维护和调试代码,或者另一个需要编写代码生成工具并假设注释类型是直接的,或者另一个仅仅使用这种注释的人,甚至没有梦想会发生什么以及如何处理它。当他发现黑客攻击并找到消除它的方法时,他将死于疝气或类似的疾病:-)注释被认为是纯粹的声明性语句,由codegen工具单独解释,该工具与注释代码分开运行并将其视为数据。
与人们可以输入代码相比,这仍然是一件小事。 注释不是练习黑客的地方-这是编译器试图传达的。你知道注解“实现”中的代码什么时候运行,怎样运行吗?包括CTOR?什么是可用的,什么是不可用的?什么是安全呼叫?编译器没有-编译器需要相当繁重的静态分析来检查这种黑客行为的实际安全性。因此,它只是发出一个警告,这样当出现问题时,人们就不能责怪compile、VM和其他任何东西。 |
![]() |
Mario Zelic · 更改子类方法签名时使用@重写注释 3 年前 |
![]() |
LM10 · @Resource注释的含义 7 年前 |
![]() |
Chris · 函数参数dtype声明不起作用? 7 年前 |
![]() |
edison ouyang · 招摇过市批注未生成预期结果 7 年前 |