黑马程序员之反射的两个小例子

------- android培训java培训、期待与您交流! ----------
第一个小问题:如何使用myeclipse给一个类的main方法传递参数?
在要传递参数的类里,右键-->run as-->run configurations-->可以看到如下图所示:

选中arguments选项卡,在下面的Program arguments里填写要传递的参数即可。
第二个小问题:如何用反射方式执行某个类中的main方法?
//本实例实现如下功能:ReflectDemo类利用反射执行TestArguments中的main方法,逐个输出传给TestArguments的参数
public classReflectDemo{
public static void main(String[] args) throws Exception {
//为什么要用反射的方式调用?因为不知道要调用的类名,所以以参数的方式传入
//下面这句代码是使用静态代码的方式直接调用main方法,在此只是做个对比
                TestArguments.main(new String[]{"111","222"});//①

                //args[0]就是传给ReflectDemo类的第一个参数,具体实现参照第一个小问题
String startClassName = args[0];//args[0]就是要启动的那个类 
                //利用反射获得TestArguments类的main方法
Method mainMethod = Class.forName(startClassName).getMethod("main", String[].class);
//main方法是静态的,所以invoke的第一个参数可以不用传值,设置为null
                //查了下jdk手册,invoke这个方法就是对带有指定参数的指定对象调用由此Method 对象表示的底层方法,具体到下面这句代码:就是把
                // new Object[]{new String[]{"111","222"}}这个参数传给TestArguments类的main方法,去执行这个main方法
                //还要注意,invoke方法的参数是Object类型,所以要使用new Object封装一下才可以
mainMethod.invoke(null, new Object[]{new String[]{"111","222"}});//②
                //这句与上面一句实现同样的效果
mainMethod.invoke(null, (Object)new String[]{"111","222"});//③
}
}
另一个类:
//用反射方式执行下面这个类中的main方法
class TestArguments{
public static void main(String[] args){
for(String arg:args){
System.out.println(arg);
}
}
}

执行结果为:
111
222
111
222
111
222
这三组结果分别是①②③的运行结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值