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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 燕国庆 于 2012-12-4 16:21 编辑

                System.out.println(mainMethod.invoke(null, (Object)new String[]{"zhangsan","lisi","wangwu"}));为什么在打印输出的时候会输出一个null那?按理不就是遍历打印出数组中的各个元素为止吗



class ArgumentsTest{
        public static void main(String[] args){
                for(String arg:args){
                        System.out.println(arg);
                }
        }
}

谢谢两位

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

3 个回复

倒序浏览
public static void main(String[] args)throws Exception
{
  Class<?> arguments = ArgumentsTest.class;
  Method mainMethod = arguments.getMethods()[0];
  mainMethod.invoke(arguments, (Object)(new String[]{"aa","bb"}));//此处为从中调用底层方法的对象
}

class ArgumentsTest{
    public static void main(String[] args){
            for(String arg:args){
                    System.out.println(arg);
            }
    }
}

确实是遍历打印出数组中的各个元素为止。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
不仔细看还真看不出来,ArgumentsTest的main方法确实只打印了"zhangsan","lisi","wangwu".
最后的null是因为调用了mainMethod.invoke(null, (Object)new String[]{"zhangsan","lisi","wangwu"})的返回值,他的返回值是个null;
若想不打印null,就不要在外面包一个SOP,因为ArgumentsTest的main方法已经打印过一边了.
直接写成mainMethod.invoke(null, (Object)new String[]{"zhangsan","lisi","wangwu"})就可以了

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
罗会涛 发表于 2012-12-4 15:57
不仔细看还真看不出来,ArgumentsTest的main方法确实只打印了"zhangsan","lisi","wangwu".
最后的null是因为 ...

哈哈
是的,明白了,是那样的问题,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马