如何从 java 类外部调用私有方法
2022-09-01 11:13:09
我有一个类,它有一个名为 的私有方法。我想从外面打电话。我认为通过反思应该是可能的,但我得到了一个.任何想法???Dummy
sayHello
sayHello
Dummy
IllegalAccessException
我有一个类,它有一个名为 的私有方法。我想从外面打电话。我认为通过反思应该是可能的,但我得到了一个.任何想法???Dummy
sayHello
sayHello
Dummy
IllegalAccessException
在使用方法对象的方法之前,先在 Method 对象上使用。setAccessible(true)
invoke
import java.lang.reflect.*;
class Dummy{
private void foo(){
System.out.println("hello foo()");
}
}
class Test{
public static void main(String[] args) throws Exception {
Dummy d = new Dummy();
Method m = Dummy.class.getDeclaredMethod("foo");
//m.invoke(d);// throws java.lang.IllegalAccessException
m.setAccessible(true);// Abracadabra
m.invoke(d);// now its OK
}
}
首先,您必须获取类,这非常简单,然后使用按名称获取方法,然后您需要将方法设置为可通过对象上的方法访问。getDeclaredMethod
setAccessible
Method
Class<?> clazz = Class.forName("test.Dummy");
Method m = clazz.getDeclaredMethod("sayHello");
m.setAccessible(true);
m.invoke(new Dummy());