通过反射调用具有Class <t>类型参数的私有方法</t>

时间:2013-09-01 14:13:10

标签: java generics reflection

我有一个方法如下:

private <T> T _findEntity(Class<T> klass, Object entityId) {
    ...
}

要通过反射调用此函数,我尝试了下面的代码片段,结果不成功:

Method method = GenericPersistenceManager.class.getDeclaredMethod("_findEntity", Object.class, Object.class);
method.setAccessible(true);
Player player = (Player) method.invoke(genericPersistenceManager, Player.class, "str");

那么有没有办法通过Java反射调用像_findEntity这样的方法?

由于

2 个答案:

答案 0 :(得分:3)

您正在寻找错误的方法。您的方法采用两个类型的参数 - ClassObject。而且您正在搜索将Object作为两个参数的方法。

您应该将第二个参数更改为Class.class

Method method = GenericPersistenceManager.class.getDeclaredMethod("_findEntity", 
                                                     Class.class, Object.class);

答案 1 :(得分:1)

将您的电话改为

Method method = GenericPersistenceManager.class.getDeclaredMethod("_findEntity", Class.class, Object.class);