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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐帅 中级黑马   /  2012-7-12 10:49  /  1508 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 徐帅 于 2012-7-17 16:09 编辑

package cn.xushuai.day1;
在给主函数传参的时候因为JDK1.4会拆包,即把数组打散成若干个独
我这里用了有两种方式,
第一种是张老师的把整个String数组看做是Object[ ]数组的一个元素(报错,说有语法错误?)
第二种是李老师的。直接把数组封装成对象,(运行正确)

import java.lang.reflect.Method;

public class MainArgs {
        public static void main(String[] args)throws Exception{        
        
                String startingClassName = args[0];
                Method mainMethod = Class.forName(startingClassName).getMethod("main",String[].class);
                mainMethod.invoke(null, new Object[](new String[]{"121","fsg","234"}));
                mainMethod.invoke(null, (Object)new String[]{"121","dsf","fsf"});
                }
        }

class TestArgs{         
        public static void main(String[] args){

        for(String arg: args){
                System.out.println(arg);
                }
        }
}

UntitledImage4.png (4.9 KB, 下载次数: 16)

错误信息

错误信息

4 个回复

倒序浏览

回帖奖励 +2

import java.lang.reflect.Method;

class MainArgs {
        public static void main(String[] args)throws Exception{        
        
               
                Method mainMethod = TestArgs.class.getMethod("main",String[].class);//这里是要调用的主函数所在类的字节码TestArgs.class
                mainMethod.invoke(null, new Object[]{new String[]{"121","fsg","234"}});//Object数组是把String数组当成一个元素,所以用大括号
                mainMethod.invoke(null, (Object)new String[]{"121","dsf","fsf"});
                }
        }

class TestArgs{         
        public static void main(String[] args){

        for(String arg: args){
                System.out.println(arg);
                }
        }
}
回复 使用道具 举报
本帖最后由 王达 于 2012-7-12 11:11 编辑

import java.lang.reflect.Method;

public class MainArgs {
        public static void main(String[] args)throws Exception{        
        
                String startingClassName = args[0];
                Method mainMethod = Class.forName(startingClassName).getMethod("main",String[].class);
                mainMethod.invoke(null, new Object[](new String[]{"121","fsg","234"}));    你这里new Object[]{new String[]{"121","fsg","234"} 不应该是括号。。。。。                mainMethod.invoke(null, (Object)new String[]{"121","dsf","fsf"});
                }
        }

class TestArgs{         
        public static void main(String[] args){

        for(String arg: args){
                System.out.println(arg);
                }
        }
}
红字那里有错误
回复 使用道具 举报
  mainMethod.invoke(null, new Object[](new String[]{"121","fsg","234"}));
应该改为:
  mainMethod.invoke(null, new Object[]{new String[]{"121","fsg","234"}});
回复 使用道具 举报
陆强强 发表于 2012-7-12 11:04
import java.lang.reflect.Method;

class MainArgs {

谢谢啊。已修正
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马