反射和类加载

类的加载
        当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过 加载,连接,初始化三步来对这个类进行初始化。
        加载
                就是将指定的class文件读入内存,并为之创建一个Class对象。
                任何类被使用时系统都会创建一个Class对象。
        连接
                验证:是否有正确的内部结构,并和其它类协调一致
                准备:负责为类的静态成员分配内存,并设置默认值。
                解析:将类的二进制数据中的符号引用,替换为直接引用,
        初始化:类的初始化
类加载器
        负责将.class文件加载到内存中,并为之生成相应的Class对象。
        类加载器的组成:
            Bootstrap ClassLoader 根类加载器 
                    -----也被称为 引导类加载器,负责java核心类的加载,比如System,String等,在JDK中的JRE的lib目录下的rt.jar下
            Extendsion ClassLoader扩展类加载器
                    -----负责JRE扩展目录下的jar包的加载,在JDK的jre的lib目录下的ext目录
            App ClassLoader系统类加载器
                    -----负责在JVM启动时加载来自java命令的class文件以及classpath环境变量的所指定的jar包和类路径
java反射机制
        JAVA反射机制是在 运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的 任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
        得到类的Class文件
                方式1:
                        new一个对象,然后用该对象的getClass()方法得到
                方式2:
                        用类的class属性获得,
                方式3:
                        用Class.forName(全限定包名);    //推荐使用方式3        








你可能感兴趣的:(反射和类加载)