日期:2014-05-20 浏览次数:20974 次
import java.lang.relfect.*;
class A {
private void test() {
System.out.println("this is a private method");
}
}
public class Test {
public static void main(String[] args) throws Throwable {
A a = new A();
Class c = A.class;
Method m = c.getDeclaredMethod("test", new Class[]{}); //获取方法
m.setAccessible(true); //修改访问权限
m.invoke(a, new Object[]{}); //调用方法
}
}
------解决方案--------------------
本地方法调用
------解决方案--------------------
“对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。”
m.invoke(a,new Object[]{}),表示唤醒 a 对应的类实例中 的 m 方法, 其参数为 Object[]{}
楼主要深究反射的话, 建议多看看java类加载机制,jvm运行的一些原理等等,应该很有帮助。