从类中获取可从java源代码调用的方法列表

时间:2016-04-19 11:59:42

标签: java reflection

我需要一种方法来获取可以从java文件调用的java类的所有方法的列表。我知道我可以使用Class.getMethods,但这在我需要它的某些情况下不起作用:

public interface IField<T> {
    public void setValue(T value);
}

public class Field implements IField<String> {
    private String value;

    @Override
    public void setValue(String value) {
        this.value = value;
    }
}

调用Field.class.getMethods()包含setValue方法,但只允许从java源文件中调用String参数的方法。

只需删除&#34;不太具体的&#34;参数也不是解决方案,因为可能会出现这样的情况:

public abstract class AbstractBean {
    private Object value;

    public void setValue(Object value) {
        this.value = value;
    }
}

public class Field extends AbstractBean {
    private Integer value;

    public void setValue(Integer value) {
        this.value = value;
    };
}

可以调用两个setValue方法。

1 个答案:

答案 0 :(得分:1)

经过一些研究后,我发现了article on type erasure。因此,我必须通过bridge

过滤掉Method.isBridge()方法