我在Custom Annotations上看到的大多数文章都有关于如何创建和使用它们的明确示例,但它们提供了大部分解决的微不足道的问题。其他一个执行器模式,例如在JUnit中,这些示例并没有让我知道如何应用自定义注释来简化代码。
我理解如何使用它们,但我很想知道我应该考虑创建它们的任何场景。是否有常见的面向对象模式,它可以简化使用自定义注释的解决方案?
答案 0 :(得分:6)
当您想要通过反射向对象提取内容或从对象中提取内容时,可以使用它们。
除非您正在编写某种框架,客户端或可重用代码,否则通常这不是您要做的事情。
一个具体的例子是我的annotations in the Riak Java client。
对于ORM(对象关系映射),我创建了一组完整的注释,允许用户注释自己的类,以便他们可以简单地说“请将其存储在Riak中”并传入他们自己的对象。注释允许对存储桶,密钥,内容类型,向量时钟等进行注释,并使用反射我提取该信息并构建适当的有线协议对象,然后发送给Riak。
当从Riak获得响应时,它们还允许对用户对象进行反序列化;所有响应数据都被注入用户的注释字段/方法。
几乎所有具有某种ORM或注入机制的库都提供了注释供您使用。这就是他们写作的原因。正如你所提到的,JUnit是一个,但像JSON解析器这样的东西是另一个很好的例子(Gson,Jackson)。春天是一个很好的例子。