gpt4 book ai didi

java - 在数组中存储类

转载 作者:行者123 更新时间:2023-12-01 18:35:12 27 4
gpt4 key购买 nike

我有 n 个类(Class1、Class2、..、Classn),每个类都有一个静态主方法。

我希望将此类存储在数组中,并为每个类调用一次 main 方法。但是我必须为这个数组声明什么类型?

这就是我根据T.J.的回复最后所做的。克劳德

ArrayList<Class> meoa = new ArrayList(
Arrays.asList(Class.forName("mypackage.Class1"),
Class.forName("mypackage.Class2"),
Class.forName("mypackage.Class3"),
Class.forName("mypackage.Class4"),
Class.forName("mypackage.Class5")));


for(Class cls:meoa) {
System.out.println("Invoking:"+cls.getName());
Method m = cls.getDeclaredMethod("main", String[].class);
Object[] arg = new Object[1];
arg[0] = new String[] {};
m.invoke(null, arg);
}

最佳答案

类型为Class[](Class的数组)。 (由于 main 是一个静态方法,因此我们实际上不能为此使用接口(interface)。)

当您准备好调用 main 时,您可以通过反射来执行此操作,例如:

Class[] classes = /*...create and fill in the array...*/;
for (Class cls : classes) {
// Look up the main method accepting an array of strings
Method m = cls.getDeclaredMethod("main", String[].class);
m.invoke(null, /*...see note below...*/);
}

重新“参见下面的注释”:您传递的参数invoke是一个包含参数的Object[](Object数组)给出main。由于 main 需要一个参数(字符串数组),因此您必须向其传递一个单条目 Object[],其中该条目是 String[] 。例如,如果您要将 ["one", "two", "Three"] 传递给 main,您将构造 invoke 参数如下:

Object[] arg = new Object[1];                    // Room for one argument
arg[0] = new String[] { "one", "two", "three" }; // That one arg is a String array
m.invoke(null, arg); // Invoke main

(对 invoke 的调用中的 null 用于调用该方法的实例;由于 main 是静态的,因此我们提供null 。)

关于java - 在数组中存储类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22298621/

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