gpt4 book ai didi

java - 获取静态初始化 block 以在不加载类的情况下在java中运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:13 25 4
gpt4 key购买 nike

我有几个类,如下所示

public class TrueFalseQuestion implements Question{
static{
QuestionFactory.registerType("TrueFalse", "Question");
}
public TrueFalseQuestion(){}
}

...

public class QuestionFactory {

static final HashMap<String, String > map = new HashMap<String,String>();

public static void registerType(String questionName, String ques ) {
map.put(questionName, ques);
}
}



public class FactoryTester {
public static void main(String[] args) {
System.out.println(QuestionFactory.map.size());
// This prints 0. I want it to print 1
}
}

如何更改 TrueFalseQuestion 类,以便始终运行静态方法,以便在运行 main 方法时得到 1 而不是 0?我不想对 main 方法进行任何更改。

我实际上是在尝试实现子类向工厂注册的工厂模式,但我已经简化了这个问题的代码。

最佳答案

你可以调用:

Class.forName("yourpackage.TrueFalseQuestion");

这将加载类,而无需您实际接触它,并将执行静态初始化程序 block 。

关于java - 获取静态初始化 block 以在不加载类的情况下在java中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2582891/

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