类型的主动使用、被动使用以及class文件的来源
一、类型的主动使用、被动使用
?
????? 在类和接口被装载、连接的时机上,Java虚拟机给实现者提供了一定的灵活??
????? 性。但是它严格规定了初始化的时机。所有的Java虚拟机的实现必须在每个
????? 类或者接口首次主动使用时初始化。下面六中情况属于主动使用:
?
????????? --> 当创建类的新实例时
?
????????? --> 当访问某个类或接口的静态变量,或为该静态变量赋值时(用final
????????????????关键字修饰的静态变量除外,他被初始化为一个编译时常量表达式)
?
????????? --> 当调用某个类的静态方法时
?
????????? --> 当调用Java API中的某些反射方法时,比如Class类中的forName()?
??????????????? 方法或者?java.lang.reflect包中的方法
?
????????? --> 当初始化某个类的子类时(某个类初始化时,要求它的超类已被初始
??????????????? 化)
?
????????? --> 当虚拟机启动时某个被标明为启动类的类(也就是含有main()方法的
??????????????? 那个类)
?
?????? 除了以上六种情况以外,其他使用java类的情况都被看成是对java类的被动
???????使用,不会导致类的初始化。
?
?