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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 奋发吧小白 于 2014-9-3 23:03 编辑
  1. 通过反射调用一个类的主函数:
复制代码

                String startingClassName = args[0];
                Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
                mainMethod.invoke(null,new String[]{"111","222","33"});

上面的 三句代码;
这一句  String startingClassName = args[0];是什么意思?
我理解为把一个数组的元素 直接赋值给一个String 类型的变量了。
但是为什么这个变量可以直接作为参数直接传递给Class.forName();来获取字节码?
不是Class.forName()内的参数只能是类的 全名吗?

谁能帮我解释下?

         

1 个回复

正序浏览
public static void main(String[] args)   这句是main函数,可以看到args是一个数组,数组里存的是String
而args就是运行主函数的时候的参数   具体怎么在运行的时候加参数你看下张老师演示这道题的时候的步骤就知道了    他 是把一个类名做为参数传进来的
所以Class.forName的参数就是args[0]
Class.forName()内的参数必须是类的全名,不然获得不了字节码 会报异常的,你试下就知道了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马