只显示一个注释

时间:2017-05-02 10:55:43

标签: java reflection annotations

如您所见,我有3种不同的注释类。除了班级名称外,所有3个都是相同的。我呼叫Tree.getAnnotations()时唯一出现的是注释@Element

    @Element(name = "node")
public class Tree<T> {

    private Tree<T>[] children = null;
    private T value;

    public Tree(T v, Tree<T>[] trees){
        children = trees;
        value = v;
    }

    public Tree(T v){
        value = v;
    }

    @SubElements(name = "subnodes")
    public Tree<T>[] getChildren(){
        return children;
    }

    @ElementField(name = "value")
    public T getValue(){
        return value;
    }

}

这是注释类:

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface Element {

    String name();

}

1 个答案:

答案 0 :(得分:1)

该类确实只有一个注释。另外两个属于类方法。要找到他们,你可以这样做:

Method getValue = Tree.class.getMethod("getValue"); //get the method
getValue.getAnnotations(); //get annotations, only ElementField in this case

每种其他方法都一样。