java - 使用反射调用静态方法获取返回值

标签 java reflection

Possible Duplicate:
How do I invoke a private static method using reflection (Java)?

所以有一个名为“getInstance”的方法,它只返回某个类的实例。这是一个没有参数的静态方法。

我如何调用该方法并获取该类的返回值(实例)?我尝试使用的每个方法都要求我在参数中拥有该类的实例。

例如,我尝试使用

Method method = classLoader.loadClass("testClass").getMethod("getInstance", null);
            Object object = method.invoke(null, null);

但我总是在这一行遇到空指针异常,

Object object = method.invoke(null, null);

我假设我得到了它,因为它要求的对象为空。

感谢您的帮助。

编辑:方法不为空。我正在做一个System.out.println(method == null);它打印出 false。

最佳答案

您不希望 null 作为您的参数或参数列表。相反,你可以这样做

Method method = classLoader.loadClass("testClass").getMethod("getInstance", new Class[0]);
Object object = method.invoke(null, new Object[0]);

或以下内容,因为它们是可变参数方法。

Method method = classLoader.loadClass("testClass").getMethod("getInstance");
Object object = method.invoke(null);
// or works but is perhaps confusing.
Object object = method.invoke(null, null);

关于java - 使用反射调用静态方法获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367961/

相关文章:

java - Java 中查找字段属于哪个类,父类还是子类?

Delphi 在类过程中使用反射来获取动态类类型

java - 使用反射获取Java中泛型参数的类型

java - 直接获取字段的注解

java - 如何在 ActionListener 中拥有两个相关的操作?

java - 下载二进制文件会抛出 org.jvnet.mimepull.MIMEParsingException : java. io.IOException:流已关闭

java - 使用 Java 7 绕过内核?

swift - Bundle.classNamed(_ 类名 : String) fails but NSClassFromString() work

java - JAXB 仅解码 XML 文件的深层嵌套子集

java - 套接字将多个客户端编程到一台服务器