java – 静态类初始化什么时候发生?

什么时候静态字段初始化?如果我从来没有实例化一个类,但我访问一个静态字段,是所有的静态块和私有静态方法用于实例化在该时刻调用(按顺序)的私有静态字段?

如果我调用一个静态方法怎么办?它也运行所有的静态块?之前的方法?

类静态初始化通常在第一次之前发生,发生以下事件之一:

>类的一个实例被创建,
>调用类的静态方法,
>一个静态字段的类被分配,
>使用非常量静态字段,或
>对于顶级类,将在类中执行词法嵌套的assert语句。

JLS 12.4.1

也可以强制类初始化(如果尚未初始化)使用Class.forName(fqn, true, classLoader)或短格式Class.forName(fqn)

http://stackoverflow.com/questions/3499214/when-does-static-class-initialization-happen

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 静态类初始化什么时候发生?