java反射机制不能调用私有方法……

lovery99 2012-09-19 09:49:19
在网上看到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);
}
}
...全文
536 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
安特矮油 2012-09-21
  • 打赏
  • 举报
回复
getDeclaredMethod(name, parameterTypes)使用这个方法获取方法,好好看看API,getMethod只能获取public的方法
YECHWNG 2012-09-21
  • 打赏
  • 举报
回复
可以的,连私有的构造函数都能调用
杀手 2012-09-19
  • 打赏
  • 举报
回复
加上method.setAccessible(true);依然不行
sjlzcj 2012-09-19
  • 打赏
  • 举报
回复
要学会自己看API


如果我没记错的话 方法 setAccessible

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧