如何在java中使用反射调用类的main()方法

Akh*_*bey 4 java reflection

当使用反射从另一个main方法调用Java类的main方法时,

Class thisClass = loader.loadClass(packClassName);
Method thisMethod = thisClass.getDeclaredMethod("main",String[].class);

thisMethod.invoke(null, new String[0]);
Run Code Online (Sandbox Code Playgroud)

我应该创建newInstance()还是简单地调用main(),因为它是静态的.

Per*_*ion 8

对于您声明的要求(动态调用随机类的主要方法,使用反射,您有很多不必要的代码.

  • 您不需要为该类调用构造函数
  • 您不需要内省类字段
  • 由于您正在调用静态方法,因此您甚至不需要真正的对象来调用该方法

您可以调整以下代码以满足您的需求:

try {
    final Class<?> clazz = Class.forName("blue.RandomClass");
    final Method method = clazz.getMethod("main", String[].class);

    final Object[] args = new Object[1];
    args[0] = new String[] { "1", "2"};
    method.invoke(null, args);
} catch (final Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)