您的位置:首页 > 编程语言 > Java开发

java 类加载后不一定会对类进行初始化

2016-03-06 15:32 260 查看
下面是会对类进行初始化的情况:

当创建某个类的新实例时(如通过new或者反射,克隆,反序列化等)
当调用某个类的静态方法时
当使用某个类或接口的静态字段时
当调用Java API中的某些反射方法时,比如类Class中的方法,或者java.lang.reflect中的类的方法时
当初始化某个子类时
当虚拟机启动某个被标明为启动类的类(即包含main方法的那个类)

    Java编译器会收集所有的类变量初始化语句和类型的静态初始化器,将这些放到一个特殊的方法中:clinit。 
Class.forName("A")相当于Class.forName("A",true,this.getClass().getClassLoader()) true参数代表对类A进行初始化。
Class.forName("A",false,this.getClass().getClassLoader()) 就不会对类A进行初始化了。

ClassLoader的loadClass(String className);方法只会加载并编译某类,并不会对其执行初始化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: