"的对象启动 main 方法-6ren"> "的对象启动 main 方法-我有一个这样的对象 Class myClass = getMyClass(); // don't ask about getMyClass() method, it's not important, -6ren">
gpt4 book ai didi

java - 从类型为 "Class"的对象启动 main 方法

转载 作者:行者123 更新时间:2023-12-01 06:54:08 24 4
gpt4 key购买 nike

我有一个这样的对象

Class<?> myClass = getMyClass();
// don't ask about getMyClass() method, it's not important,
just be sure that this method returns a class.

其次,我确定“myClass”包含“main(String args[])”方法。

我怎样才能启动这个主要方法。我想我应该使用 java.lang.reflect,但我不知道如何使用。

我想要的就是做这样的事情。

String params[] = {"arg1", "arg2"};
cl.main(params);

最佳答案

来自Java tutorial on the reflection API :

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;

public class InvokeMain {
public static void main(String... args) {
try {
Class<?> c = Class.forName(args[0]);
Class[] argTypes = new Class[] { String[].class };
Method main = c.getDeclaredMethod("main", argTypes);
String[] mainArgs = Arrays.copyOfRange(args, 1, args.length);
System.out.format("invoking %s.main()%n", c.getName());
main.invoke(null, (Object)mainArgs);

// production code should handle these exceptions more gracefully
} catch (ClassNotFoundException x) {
x.printStackTrace();
} catch (NoSuchMethodException x) {
x.printStackTrace();
} catch (IllegalAccessException x) {
x.printStackTrace();
} catch (InvocationTargetException x) {
x.printStackTrace();
}
}
}

关于java - 从类型为 "Class<?>"的对象启动 main 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com