2013-07-15 53 views
1

我有我自己的註釋如何獲得現場的註釋在Java中

@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() {}; 
} 

而且我有傑克遜seriliazer TemplateSerializer是獲得'在將對象序列化爲JSON時傳遞的地址。

我想知道如何獲得給定'地址'實例的@Template註解? 我想獲取其「目標」字段,然後檢查PersonRepresentation.class

+1

註釋未鏈接到實例。它們與課程及其領域相關聯。你的問題對我來說沒有多大意義。爲了得到這個註解,檢查'Something'類的'address'字段。 –

+0

嗯。當使用Jackons序列化時,我無法訪問'Something'。但是沒問題。這意味着我必須改變我的方法。謝謝。 – DodoFXP

回答

3

您需要先訪問addressField

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

然後你就可以得到註釋

Class clazz = annotation.target(); 

由於JB Nizet曾這樣評價的target領域,在註釋中提供的信息是相關的類,而不是實例。