当前位置 博文首页 > 老子(道家):反射概述与Class对象的三种获取方式

    老子(道家):反射概述与Class对象的三种获取方式

    作者:[db:作者] 时间:2021-09-12 15:05

    Java反射机制:

    ? ? 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取的信息以及动态调用对象方法的功能称为Java语言的反射机制。

    ?

    类加载器:

    ? ? 负责将.class文件加载到内存中,并为之生成对应的Class对象。

    ?

    • Bootstrap ClassLoader 根类加载器

    ? ? ? ? ? ? ?也被称为引导类加载器,负责Java核心类的加载(如JDK中JRE的lib目录下的rt.jar文件)

    • Extension ClassLoader 扩展类加载器

    ? ? ? ? ? ? ?负责JRE的扩展目录中jar包的加载(如JDK中JRE的lib目录下的ext目录)

    • System ClassLoader 系统类加载器

    ? ? ? ? ? ? ?负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径?

    ?

    获取Class对象的三种方式:

    package ms.gaoke.reflector;
    /**
     * Class类:
     *     成员变量    Field
     *     构造方法    Constructor
     *     成员方法    Method
     * 
     * 获取Class文件对象的方式:
     *     A: Object类的getClass()方法
     *     B: 数据类型的静态属性class
     *     C: Class类中的静态方法
     *         public static Class forName(String className)
     *
     */
    
    public class GetClassDemo {
    
    	public static void main(String[] args) throws ClassNotFoundException {
    		// 方式1
    		Person p1 = new Person();
    		Class c1 = p1.getClass();
    		
    		// 方式2
    		Class c2 = Person.class;
    		
    		// 方式3  开发中使用方式3
    		Class c3 = Class.forName("ms.gaoke.reflector.Person");		
    
    	}
    }
    

    ?

    ?

    ?

    ?

    cs