我有一个方法如下:
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
这样的方法?
谢谢
最佳答案
您正在寻找错误的方法。您的方法采用两个类型的参数 - Class
和 Object
。并且您正在搜索将 Object
作为两个参数的方法。
您应该将第二个参数更改为Class.class
:
Method method = GenericPersistenceManager.class.getDeclaredMethod("_findEntity",
Class.class, Object.class);
关于java - 通过反射调用具有 Class<T> 类型参数的私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559253/