要执行某个类的方法,不管是什么方法Main(),还是别的方法,都必须获得这个方法,获得方式是通过反射。
步骤一:要执行哪个类的main方法。获得这个类。==》Class.forName(startingClassName);
步骤二:通过类里面的getMethod方法获得名为main的方法。API
Method getMethod(String name, Class<?>... parameterTypes)
返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
Method mainMethod = Class.forName(startingClassName).getMethod("main", [color=DarkRed]String[].class[/color]); 第一个参数是要执行的方法的名字,你要执行main方法,就写main第二个参数是main方法的参数类型
我们知道public static void main([color=DarkRed]String [][/color] args){}这个方法里面的参数是String数组.getMethod方法里第二个参数就是String[].class
获得这个方法以后就去执行它:这是类Method里面的invoke方法
Object invoke(Object obj, Object... args)
对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。 因为Main方法是静态方法,所以第一个参数为null,你的程序里面就是将String[]("111","222","333")作为参数传递给了 startingClassName这样一个类。由于程序运行到这里的时候会自动拆箱,所以将他们装箱成一个Object
。再看不懂去看看反射的视频 |