日期:2014-05-20  浏览次数:20679 次

java反射机制不能调用私有方法……
在网上看到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的方法