- import java.lang.reflect.Method;
- public class MethodTest {
- public static void main(String[] args) throws Exception {
- //调用某个类中的main方法(某个类),不能确定类
- //只有当用户传进类名,才能确定是哪个类中的main方法
- String startingClassName = args[0];
- //取得类的main方法
- Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
- //因为是静态方法,所以可以使用null
- //因为JDK兼容1.4,所以String数组会被打开,成为三个字符串参数,
- //而main方法只是需要一个字符串数组参数,那就就错了
- //main方法需要的是String[]类型的参数,所以要加一层包装,
- //或者告诉编译器,我这是一个对象,别帮我拆包
- //mainMethod.invoke(null,new String[]{"111","222","333"});
- mainMethod.invoke(null,new Object[]{new String[]{"111","222","333"}});
- mainMethod.invoke(null,(Object)new String[]{"111","222","333"});
- }
- }
- class TestArguments{
- public static void main(String[] args) {
- for (String arg : args) {
- System.out.println(arg);
- }
- }
- }
复制代码 这个听了两次的讲解才明白了
|