我在自定义注释上看到的大多数文章都有关于如何创建和使用它们的清晰示例,但它们提供的大多是正在解决的琐碎问题。除了 JUnit 中的执行程序模式之外,这些示例并没有让我意识到如何应用自定义注释来简化代码。

我了解如何使用它们,但我很想知道我应该考虑创建它们的任何场景。是否有通用的面向对象模式可以简化使用自定义注释的解决方案?

最佳答案

当您想通过反射向/从对象注入(inject)或提取某些内容时,可以使用它们。

除非您正在编写某种框架、客户端或可重用代码,否则通常不会这样做。

一个具体的例子是我的 annotations in the Riak Java client

对于 ORM(对象关系映射),我创建了一组完整的注释,允许用户注释他们自己的类,以便他们可以简单地说“请将其存储在 Riak 中”并传入他们自己的对象。注释允许对存储桶、 key 、内容类型、 vector 时钟等进行注释,我使用反射提取该信息并构建适当的线路协议(protocol)对象,然后将其发送给 Riak。

当从 Riak 得到响应时,它们还允许反序列化到用户对象;所有响应数据都注入(inject)到用户的带注释的字段/方法中。

几乎任何具有某种 ORM 或注入(inject)机制的库都提供注释供您使用。这就是它们被写入的原因。正如你所提到的,JUnit 是其中之一,但像 JSON 解析器这样的东西是另一个很好的例子(Gson、Jackson)。 Spring 就是一个很好的例子。

关于java - Java 自定义注解有哪些合适的用途?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23074029/

10-10 04:43