[英]Java Annotation Processors: Usage & Applications
我对Java EE开发相对较新,虽然我理解注释是什么,以及如何使用它们,但在理解为什么有人需要编写和处理自己的时候,我很难“看到森林穿过树林”。 注释。
在什么情况下你甚至需要自定义注释?
我确信它们在某种程度上是至关重要的,我只是因为某种原因看不出它们的用处。
感谢任何正确方向的推动!
自定义注释有很多用法。 您可能认为很难找到我们创建一个的原因,因为许多已在其他框架中定义。 为了基本回答你自己的问题,你应该问“如果那些框架不存在会发生什么,我是否需要创建自定义的注释使用?” 可能的答案是肯定的。 以下是一些例子:
要回答您的问题,每次您希望通过其他框架未涵盖的其他元数据来丰富您的课程时,您可能会考虑创建自己的注释。 虽然,许多聪明的人都涵盖了注释的常见用法,但这并不妨碍您在未来提出自己的用法,因此需要您自己的自定义注释和处理。
有关StackOverflow的一些相关讨论,例如这里 。
简单地说:每当你实现自己的框架时 - 以某种方式 - 将代码“粘合”在一起,就可以在构建(或运行)时间处理的某种“元”信息中丰富代码。
一些众所周知的例子包括:依赖注入,对象关系映射,反射,文档等。
有很多原因,但它们显然是特定于应用程序的。
例如,我们注释域类是内部安全框架感知的。 我们处理我们自己的注释以用于文档目的。 我们有状态机注释,可以为配置和文档目的构建有向图。
有些是在运行时询问,有些是在文档处理期间,有些是在启动时,有些是有多种用途。
框架注释开始是自定义的东西,然后当它变成框架并发布时,它们看起来“显而易见”和“内置”,但它们并不一定总是有意。
恕我直言,他们是你可以在Java中使用的最好的东西之一,他们节省了我的年龄。 我举个例子:几天前我正在编写一个图像处理应用程序。 所有过滤器都扩展了一个名为Filter的基类,其中许多都具有对比度,亮度等属性......现在每个属性都有一个默认值,一个带有min和max的范围,一个适合gui的名称。 然后有过滤器的属性,我希望GUI通过控件公开,其他我没有。 所以我创建了你将使用的@FilterPropertyAnnotation:
...
@FilterAnnotation(name = "Image contrast", default = 0.0D, min = -100D, max = 100D)
public double getContrast(){
...
}
然后,使用反射,每次用户在GUI中选择一个过滤器时,它将扫描过滤子类的方法,查看哪些具有注释,并仅显示我用注释标记的属性的相应控件,所有这些都与正确的默认值和比例。 我想不出更简单或更快的方式来做这样的事情。
注释对我来说是Java中最好的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.