1

私は自分の注釈を持っています

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

この注釈は単純な POJO で使用されます。

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

そして、オブジェクトをJSONにシリアル化するときに「アドレス」を渡すJacksonシリアライザーTemplateSerializerがあります。

「アドレス」インスタンスを指定して @Template Annotation を取得するにはどうすればよいのだろうか? 「ターゲット」フィールドを取得してから、PersonRepresentation.class を検査したいと思います

4

1 に答える 1

5

最初に にアクセスする必要がありますaddress Field

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

target次に、注釈のフィールドを取得できます

Class clazz = annotation.target();

JB Nizet がコメントしたように、アノテーションで提供される情報は、インスタンスではなくクラスに関連しています。

于 2013-07-15T21:23:07.307 に答える