1、模拟需要被调用的main方法
package adtec.util;
public class TestDemo {
public static void main(String[] args) {
System.out.println("adtec.util.TestDemo main method");
}
}
2、实现调用其他类的main方法
package adtec.util;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class InvokeMainDemo {
public static void main(String[] args) {
//1、 创建一个实例来调用main方法
TestDemo testDemo = new TestDemo();
testDemo.main(new String[]{"huaNGBIAO","DDD"});
//2、利用反射来创建对象
try {
Method method = TestDemo.class.getMethod("main", String[].class);
/**
注意,调用Method类的方法invoke(Object,Object), main方法是类TestDemo的静态方法,调用时是不需要对象实例的。
还有一个兼容问题:method.invoke(null, new String[]{"ma","xiao"}); //思想是对的,但是版本问题,不允许了
*/
method.invoke(null, (Object)new String[]{"huaNGBIAO"});
} catch (NoSuchMethodException | SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3、类名.main(参数);
TestDemo.main(new String[]{});
}
}