我在Java EE开发方面相对较新,虽然我知道什么是注解以及如何使用它们,但是当涉及到理解为什么有人需要编写和处理自己的注解时,我很难从中看到全貌。
在什么情况下你甚至需要自定义注解呢?
我相信它们在某种程度上很关键,但出于某种原因,我没有看到它们的有用性。
感谢您给予任何正确方向上的推动!
我在Java EE开发方面相对较新,虽然我知道什么是注解以及如何使用它们,但是当涉及到理解为什么有人需要编写和处理自己的注解时,我很难从中看到全貌。
在什么情况下你甚至需要自定义注解呢?
我相信它们在某种程度上很关键,但出于某种原因,我没有看到它们的有用性。
感谢您给予任何正确方向上的推动!
在StackOverflow上有一些相关的讨论,例如这里。
简单来说:每当您实现自己的框架时,它以某种方式“粘合”代码,并在构建(或运行)时处理某种“元”信息等等。
一些众所周知的例子包括:依赖注入、对象关系映射、反射、文档等。
在我看来,它们是Java中可以使用的最好的东西之一,它们为我节省了大量时间。让我给您举个例子:几天前,我正在编写一个图像处理应用程序。所有过滤器都扩展了一个名为Filter的基类,其中许多过滤器具有属性,例如对比度、亮度等等... 现在每个属性都将具有默认值,范围(最小值和最大值),适合GUI的名称。然后,在我想要GUI通过控件公开的过滤器上有一些属性,其他一些则没有。因此,我创建了@FilterPropertyAnnotation,您可以像这样使用它:
...
@FilterAnnotation(name = "Image contrast", default = 0.0D, min = -100D, max = 100D)
public double getContrast(){
...
}
有很多原因,但它们显然是特定于应用程序的。
例如,我们注释域类以便内部安全框架意识。我们处理自己的注释以进行文档编制。我们有状态机注释,用于构建定向图,既用于配置又用于文档编制。
有些在运行时被询问,有些在文档处理期间被询问,有些在启动时被询问,有些具有多种用途。
框架注释最初是一些自定义内容,然后当它被转化为框架并发布时,它们似乎是“显而易见”和“内置的”,但它们不一定总是打算这样做。