java - 通过反射调用具有 Class<T> 类型参数的私有(private)方法

标签 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这样的方法?

谢谢

最佳答案

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

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

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

关于java - 通过反射调用具有 Class<T> 类型参数的私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559253/

相关文章:

java - 从使用 xvfb-run 启动的 java 子进程获取 pid

java - 使用堆栈理解 Java 代码中的后缀表达式求值

asp.net - 如何从用户控件内部获取 aspx 页面的类名?

android - 如何在 Dart/Flutter 中泛化可选参数

scala - (在 Scala 中,)有什么可以用类的泛型类型参数来完成,但不能用抽象类型成员来完成的吗?

c# - 应用程序的入口点

java - 使用反射将未知类的对象添加到 ArrayList

java - ArrayList toString 在 println 中有效,但在文本字段中无效

java - Aptana studio 3 挂起并且无法在 El Capitan beta 3 中启动

python - Golang 相当于 pythons __getattr__() 或 __call__()