ここに示すように、いくつかのクラスがあります
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
メイン メソッドを実行したときに 0 ではなく 1 を取得するように、静的メソッドが常に実行されるようにクラスを変更するにはどうすればよいですか? メインメソッドを変更したくありません。
サブクラスがファクトリに登録されるファクトリ パターンを実際に実装しようとしていますが、この質問のコードを簡略化しました。