A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package cn.itcast.day1;

import java.lang.reflect.*;

public class ReflectTest {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
       
                String startingClassName = args[0];
                Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
                Object[] args1 = new Object[]{new String[]{"123","456","789"}};
                System.out.println(mainMethod.invoke(null, args1));
               
        }

}

class TestArguments{
        public static void main(String[] args){
                for(String arg:args){
                        System.out.println(arg);
                }
        }
       
}
在执行这段代码时结果如下:
123
456
789
null

为什么这里会有个null值被打出来呢

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

正序浏览
System.out.println(mainMethod.invoke(null, args1));这个代码是先执行里面的方法,打印出各数字之后,然后你又打印该方法的返回值,所以又打印出null

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
itpower 发表于 2014-2-22 13:15
打印出一个null值是因为你打印了invoke方法的返回值,
而invoke调用的是TestArguments的mian方法,而mian方 ...

哦,明白了,忽略了这点了,直接写mainMethod.invoke(null, args1)这个就行。谢谢了
回复 使用道具 举报
  1. System.out.println(mainMethod.invoke(null, args1));
复制代码

打印出一个null值是因为你打印了invoke方法的返回值,
而invoke调用的是TestArguments的mian方法,而mian方法是没有返回值的
所以打印的是null;

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马