Tag: static initializer

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

我有几个课程,如下所示 public class TrueFalseQuestion implements Question{ static{ QuestionFactory.registerType(“TrueFalse”, “Question”); } public TrueFalseQuestion(){} } … public class QuestionFactory { static final HashMap map = new HashMap(); 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 […]

为什么内部类不能使用静态初始化器?

Quoth JLS#8.1.3 : 内部类可能不会声明静态初始化器 (第8.7节 )…… 这表现如下: class A { class B { static { // Compile-time Error: Cannot define static initializer in inner type AB System.out.println(“Class is initializing…”); } } } 既然Java的内部(非静态)类是由类加载器加载的 ,就像其他类一样,为什么我们不能为它们安装静态初始化器? 这种限制背后的原因是什么?