jvm lazy load class 机制, 下列情况会初始化类
1、T is a class and an instance of T is created.
2、T is a class and a static method declared by T is invoked.
3、A static field declared by T is assigned.
4、A static field declared by T is used and the field is not a constant variable
References to compile-time constants must be resolved at compile time to a copy of the compile-time constant value, so uses of such a field never cause initialization.