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);方法只会加载并编译某类,并不会对其执行初始化。
当创建某个类的新实例时(如通过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);方法只会加载并编译某类,并不会对其执行初始化。
相关文章推荐
- java利用Ant脚本生成war包全过程
- Java 自己补充知识(3)逻辑运算 Switch String三者 异常
- 书生妄言,就聊聊eclipse安装问题吧
- JavaEE的13种核心技术
- Java 自己补充知识(2)变量 数据类型
- Eclipse快捷键功能
- Java 自己补充一些知识(1)jre&jdk
- java笔记--设计模式之模版方法模式
- 2016蓝桥杯假期任务之《01背包 》
- java简单操作word实例
- java中hashCode方法与equals方法的用法总结
- java 线程学习-课前须知
- 一个简单的有限状态机例子
- 详解java模板和回调机制
- Java提高篇----抽象类与接口
- web.xml配置信息
- leetcode:Spiral Matrix 【Java】
- Java 权限修饰符
- JVM原理及优化
- Spring MVC:第二章 Spring MVC入门