Java反射 - 从非泛型类中获取泛型方法

时间:2012-03-20 11:54:06

标签: java generics reflection

是否可以通过反射从非泛型类中获取通用(参数化)方法? 这是我想要做的样本:

public interface GenericInterface<T> {
    public T publicMethod(T arg);
}

public class NonGenericClassWithGenericMethods {
    private <T> void privateMethod(GenericInterface<T> arg) {

    }
}

public class Generics {
    public static void main(String[] args) {
        try {
            NonGenericClassWithGenericMethods.class.getMethod("privateMethod", GenericInterface.class).setAccessible(true);
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}

如果我运行Generics,我会得到:

  

java.lang.NoSuchMethodException:   NonGenericClassWithGenericMethods.privateMethod(GenericInterface)

谢谢大家

1 个答案:

答案 0 :(得分:7)

应该使用

.getDeclaredMethod()代替.getMethod(),而{{1}}只返回公开的内容。