获取静态初始化块以在 java 中运行而不加载类

2023-12-21

我有一些课程,如下所示

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?我不想对主要方法进行任何更改。

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


您可以致电:

Class.forName("yourpackage.TrueFalseQuestion");

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取静态初始化块以在 java 中运行而不加载类 的相关文章

随机推荐