黑马程序员技术交流社区

标题: 求解,关于反射的问题 [打印本页]

作者: 耶稣说wō乖    时间: 2013-8-26 03:13
标题: 求解,关于反射的问题
本帖最后由 耶稣说wō乖 于 2013-8-26 14:55 编辑

上代码:
package cn.da;import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test07 {
         public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException,SecurityException,NoSuchMethodException, InstantiationException {
                     Constructor<Demo> ca = Demo.class.getConstructor();  
                     Demo d = ca.newInstance();  
                     Method m = Demo.class.getMethod("print");
                     System.out.println(m.invoke(d));
           }
}

class Demo
{
                   public Demo(){};
                   public void print()
                   {
                          System.out.println("woshishuaige");
                   }
}



为什么我的输出结果有个null?
我没给他写输出语句啊!
哪冒出来的


作者: javamov    时间: 2013-8-26 03:59

public class Test07 {
         public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException,SecurityException,NoSuchMethodException, InstantiationException {
                     Constructor<Demo> ca = Demo.class.getConstructor();  
                     Demo d = ca.newInstance();  
                     Method m = Demo.class.getMethod("print");
                     System.out.println(m.invoke(d));//m.invoke(d)是调用方法 print()方法执行了打印woshishuaige 然后print方法返回值为void  所以打印null
           }
}

class Demo
{
                   public Demo(){};
                   public void print()
                   {
                          System.out.println("woshishuaige");
                   }
}
作者: 清心玉质    时间: 2013-8-26 08:04

你代码的输出结果是调用方法 print的输出+invoke的返回值。
说以第一个输出没有什么好解释的,第二个输出null是因为:如果invoke调用方法的返回值为void,会返回null值。

作者: 薛鹏鹏    时间: 2013-8-26 11:52
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2