在网上看到java反射机制是可以调用私有方法的,但是我测试的时候却不行,当被调用方法是public权限时就可以调用,当时private权限时就发生异常,异常类型:java.lang.NoSuchMethodException
代码:
public class Test4 {
public static void main(String[] args) {
try {
Class1 a = new Class1();
Class c = a.getClass();
Class[] type = new Class[1];
type[0] = Integer.TYPE;
Object arglist[] = new Object[1];
arglist[0] = new Integer(37);
Method method = c.getMethod("print", type);
method.invoke(a, arglist);
} catch (Exception e) {
System.out.println(e.getClass().getName());
}
}
}
public class Class1 {
public Class1() {}
private void print(int a) {
System.out.println("the number is : " + a);
}
}
------解决方案--------------------------------------------------------
getDeclaredMethod(name, parameterTypes)使用这个方法获取方法,好好看看API,getMethod只能获取public的方法