有没有办法在输入类B
的{{1}}方法之前强制静态初始化某个类main()
,而不使用VM选项更改类A
?
答案 0 :(得分:1)
如果没有代码,我不知道有什么方法可以做到。在代码中,当然很容易。
public class C {
static {
// Fetch and throw away an instance of B to make sure it is loaded
B.getInstance();
}
static void main(String[] args) {
// Do stuff, B is initialized
A.main(args);
}
}
事实上你可以做到
public class C {
static void main(String[] args) {
B.getInstance();
A.main(args);
}
}
你的要求虽然没有多大意义。通过这样做问一个关于你试图解决的问题的问题,你希望得到一个更有用的答案。
答案 1 :(得分:0)
你可以创建一个初始化其他类的类,然后调用真正的main方法,例如:
public static void main(String[] args) throws Exception {
Class<?> mainClass = Class.forName(System.getProperty("mainClass"));
for (String className : System.getProperty("initClasses").split(";")) {
Class.forName(className);
}
Method main = mainClass.getMethod("main", String[].class);
main.invoke(null, new Object[] { args });
}
然后,您将使用该类作为主类启动应用程序,并指定真正的主类和要通过属性初始化的类。