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/