public static void main(String[] args) throws Exception {
Class clz = User1.class;
Object obj =clz.newInstance();
Method m = clz.getDeclaredMethod("sayHello", int.class);
m.setAccessible(true);
m.invoke(obj, 20);
Object ret =m.invoke(obj, 20);
System.out.println(ret);
}
class User1{
private void sayHello(int age){
System.out.println(age);
}
}输出结果为:
20
20
null
我想问下:为什么会有个null?null是哪里来的?以及输出ret的时候为什么会是方法的结果,而不是地址值?
Class clz = User1.class;
Object obj =clz.newInstance();
Method m = clz.getDeclaredMethod("sayHello", int.class);
m.setAccessible(true);
m.invoke(obj, 20);
Object ret =m.invoke(obj, 20);
System.out.println(ret);
}
class User1{
private void sayHello(int age){
System.out.println(age);
}
}输出结果为:
20
20
null
我想问下:为什么会有个null?null是哪里来的?以及输出ret的时候为什么会是方法的结果,而不是地址值?
解决方案 »
- android 开发wenservice问题(java.rmi.RemoteException cannot be resolved)
- 求教:类集、集合类以及容器的区别是什么?
- hibernateTemplate的问题
- 谁又封装好的类似MySQL中时间选择列表的封装类,高分求!
- 怎样处理1000个人同时想写入同一个文件
- 如何将一个List的对象进行Serializable,然后传给客户端
- 如何嵌入一个web browser
- 有什么办法可以把dos那个窗口隐藏掉,或者不显示吗?
- 菜鸟提问,构造函数问题
- @#@!做了个画图可以保存和读取的java程序 但每次画的线都会覆盖上次画的 完美解决送100分啊
- 请教一个java多线程,wait和nofity的问题。
- 关于jdbc连接mysql的问题
我查Object类也没找到答案啊。。
你 输出的那个 System.out.println(ret); 里面的ret 是m.invoke(obj, 20)的返回值,所以你应该看 Method 的 invoke 方法API,而不是Object类的。。
m.invoke(obj, 20);
这句话就调用一次,因此输出第一个20
Object ret =m.invoke(obj, 20);
这句话中也调用了一次,因此输出了第二个20
System.out.println(ret);
最后一次打印,由于sayHello方法无返回值,因此ret这个对象没有被赋值,也就打印了null了
private void sayHello(int age){
System.out.println(age);
}