【问题标题】:How to get annotations of field in Java如何在Java中获取字段的注释
【发布时间】:2013-07-13 21:35:33
【问题描述】:

我有自己的注解

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Template {
   Class target();
}

这个Annotation用在一个简单的POJO中:

public class Something {   
    @JsonSerialize(using = TemplateSerializer.class)
    @Template(target = PersonRepresentation.class)
    private TemplateFoo address = new TemplateFoo() {};
}

我有 Jackson 序列化器 TemplateSerializer,它在将对象序列化为 JSON 时传递了“地址”。

我想知道如何在给定“地址”实例的情况下获得 @Template 注释? 我想获取它的“目标”字段,然后检查 PersonRepresentation.class

【问题讨论】:

  • 注释未链接到实例。它们与类及其领域相关联。你的问题对我来说没有多大意义。要获取此注释,请检查 Something 类的 address 字段。
  • 嗯。使用 Jackons 序列化时,我无法访问 Something。但是没问题。这意味着我必须改变我的方法。谢谢。

标签: java serialization reflection annotations jackson


【解决方案1】:

您需要先访问addressField

Field address = Something.class.getField("address");
Template annotation = address.getAnnotation(Template.class);

然后就可以得到注解的target字段

Class clazz = annotation.target();

正如 JB Nizet 所评论的,注释中提供的信息与类相关,而不是与实例相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多