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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝林杰 中级黑马   /  2014-4-26 21:56  /  856 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package day1;

import java.lang.reflect.Method;
/ 张孝祥老师高新部分
//根据自己的程序去调用TestArgument1中的main()
public class Refelctmain {
        public static void main(String[] args) throws Exception {
                //args[0]的第一个字段为 类名
             String startingClassName = args[0];
            //得到Method类的对象
             Method methodmain = Class.forName(startingClassName).getMethod("main",
                                String[].class);
                System.out.println(methodmain.invoke(null, (Object) new String[] {
                                "111", "123", "456", "789" }));
        }
}

class TestArgument1 {//完整类名为:day1.TestArgument1
        public static void main(String[] args) {
                for (String arg : args) {
                        System.out.println(arg);
                }
        }
}
输出的结果是:
111123456789null想问一下null哪来的啊?(想了好久都没想明白的)


3 个回复

倒序浏览
  1. System.out.println(methodmain.invoke(null, (Object) new String[] {
  2.                                 "111", "123", "456", "789" }));
复制代码

你这里打印这个方法调用什么意思,另一个类里面已经打印了,去掉这个打印就好了
回复 使用道具 举报
应该是由于接收的参数是数组;而1.4版本没有可变参数这个都是以数组的形式接收参数的;所以你这里应该在数组外面在添加一层数组;不然编译器会当场成你有3个参数;
回复 使用道具 举报
System.out.println(methodmain.invoke(null, (Object) new String[] { "111", "123", "456", "789" }));
这句话中打印的是methodmain.invoke(null, (Object) new String[] { "111", "123", "456", "789" }),而这个方法没有返回值,所以打印出null。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马