当前位置: 首页 > 面试题库 >

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

王楚青
2023-03-14
问题内容

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

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

thisMethod.invoke(null, new String[0]);

我应该创建newInstance()还是直接调用main(),因为它是静态的。


问题答案:

对于您陈述的要求(动态地调用随机类的main方法,通过反射,您有很多不必要的代码。

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

您可以修改以下代码来满足您的需求:

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();
}


 类似资料:
  • 问题内容: 我需要使用反射从另一个主要方法调用Java类的主要方法。 必须使用反射,以消除被调用主类的编译时依赖性。直截了当的方法并没有产生效果,因为它只识别“公共”和“非静态”方法。有什么建议吗? 问题答案: 不应比调用任何其他函数更复杂: 但是我真的看不到有什么用途,只要您不使用特定的代码路径,就可以买到该程序,而无需链接另一个程序,这是它唯一能为您带来的好处,但是如果这是您需要的,在这里走

  • 问题内容: 如何使用反射调用带有参数的方法? 我想指定这些参数的值。 问题答案: 这是一个使用涉及原语的反射调用方法的简单示例。 要健壮,应该捕获和处理所有检查反射有关的异常,,。

  • 问题内容: 我有两节课: 我有一个实例B。如何调用A.method()从b?基本上,效果与super.method()从调用相同B。 但是上述代码仍会调用。 问题答案: 如果使用的是JDK7,则可以使用MethodHandle实现此目的:

  • 本文向大家介绍在Java中使用反射调用对象的方法,包括了在Java中使用反射调用对象的方法的使用技巧和注意事项,需要的朋友参考一下 可以使用java.lang.Class.getDeclaredMethods()方法调用对象的方法。此方法返回一个数组,其中包含具有公共,私有,受保护和默认访问权限的所有Method对象。但是,不包括继承的方法。 另外,如果类或接口没有方法,或者在Class对象中表示

  • 问题内容: 我需要使用反射调用类的setter方法,并且代码如下: 的是一个以及设置器方法如下: 运行此代码时,将引发A ,但是将setter方法参数类型更改为from时,将执行正常。有没有一种方法可以将setter方法的参数保持为超级类型,并且在从类中获取方法时仍无需手动指定参数的类型即可使用反射? 问题答案: 与其他答案相反,有一个非常简单的解决方案。请参阅。它为您提供了一种执行任意反射代码的

  • 问题内容: 我正在尝试使用java反射调用带有可变参数的方法。这是托管方法的类: 这是调用代码: 我在调用invoke的最后一行以“错误数量的参数” 的形式获取IllegalArgumentException 。不知道我在做什么 错。 任何指针将不胜感激。 谢谢 问题答案: public class Test { 为我工作。 将您的N []投射到对象 在实例上调用,而不在类上调用