9.2认识Class类先定一个小目标!了解Class类,能够说出Class类实例化对象的3种方式yx.ityxb.com
yx.ityxb.com 9.2 认识Class类 先定一个小 目标! 了解Class类,能够说出Class类实例化对象 的3种方式
9.2认识Class类》认识Class类在1.5节中学习了Java程序的运行机制,JVM编译.java文件生成对应的.class文件,然后将.class文件加载到内存中执行。在执行.class文件的时候可能需要用到其他类(其他.class文件内容),这个时候就需要获取其他类的信息(反射)。JVM在加载.class文件时,会产生一个Class对象代表该.class字节码文件,从Class对象中可以获得.class文件内容,即获得类的信息。因此要想完成反射操作,就必须先认识Class类。yx.ityxb.com
yx.ityxb.com 认识Class类 9.2 认识Class类 在1.5节中学习了Java程序的运行机制,JVM编译.java文件生成对应的.class文件,然后 将.class文件加载到内存中执行。在执行.class文件的时候可能需要用到其他类(其他 .class文件内容),这个时候就需要获取其他类的信息(反射)。JVM在加载.class文件 时,会产生一个Class对象代表该.class字节码文件,从Class对象中可以获得.class文件 内容,即获得类的信息。因此要想完成反射操作,就必须先认识Class类
9.2认识Class类Class类提供了很多方法,通过Class类的方法可以获取一个类的Class类的常用方法相应信息,包括该类的方法、属性,具体如下所示方法描述获取与给定字符串名称的类或接口相关联的Class对象forName(String className)获取类中所有public修饰的构造方法对象getConstructorso获取所有成员变量对应的字段类对象,包括public,protected,getDeclaredFields()default和private修饰的字段,但不包括从父类继承的字段获取所有public修饰的成员变量对应的字段类对象,包括从父类继getFieldso承的字段获取所有public修饰的成员方法对应的方法类对象,包括从父类继getMethodso承的方法getMethod(Stringname根据方法名和参数类型获得对应的方法类对象,并且只能获得Class...parameterType)public修饰的方法类对象获取当前类所实现的全部接口getinterfacesoyx.ityxb.com
yx.ityxb.com 9.2 认识Class类 Class类的常用方法 Class类提供了很多方法,通过Class类的方法可以获取一个类的 相应信息,包括该类的方法、属性,具体如下所示。 方法 描述 forName(String className) 获取与给定字符串名称的类或接口相关联的Class对象 getConstructors() 获取类中所有public修饰的构造方法对象 getDeclaredFields() 获取所有成员变量对应的字段类对象,包括public,protected, default和private修饰的字段,但不包括从父类继承的字段 getFields() 获取所有public修饰的成员变量对应的字段类对象,包括从父类继 承的字段 getMethods() 获取所有public修饰的成员方法对应的方法类对象,包括从父类继 承的方法 getMethod(String name, Class.parameter Type) 根据方法名和参数类型获得对应的方法类对象,并且只能获得 public修饰的方法类对象 getInterfaces() 获取当前类所实现的全部接口
9.2认识Class类>方法描述获取调用该方法的Class对象getClasso获取类的完整名称,名称中包含包的名称getNameo获取类所属的包名称getPackageo获取类的父类getSuperclass()创建Class对象关联类的对象newInstance0)获取数组的对应Class对象getComponentTypeo)判断此Class对象是否是一个数组isArrayoyx.ityxb.com
yx.ityxb.com 9.2 认识Class类 方法 描述 getClass() 获取调用该方法的Class对象 getName() 获取类的完整名称,名称中包含包的名称 getPackage() 获取类所属的包名称 getSuperclass() 获取类的父类 newInstance() 创建Class对象关联类的对象 getComponentType() 获取数组的对应Class对象 isArray() 判断此Class对象是否是一个数组
9.2认识Class类>Class类实例化对象的3种方式因为Class类本身并没有定义任何构造方法,所以Class类不能直接使用构造方法进行对象的实例化,使用Class类进行对象的实例化可以使用以下3种方式:(1)根据全限定类名获取:Class.forName("全限定类名)。(2)根据对象获取:对象名.getClass0。(3)根据类名获取:类名.class。yx.ityxb.com
yx.ityxb.com Class类实例化对象的3种方式 9.2 认识Class类 因为Class类本身并没有定义任何构造方法,所以Class类不能直接使用构造方法进行 对象的实例化,使用Class类进行对象的实例化可以使用以下3种方式: (1)根据全限定类名获取:Class.forName(“全限定类名”)。 (2)根据对象获取:对象名.getClass()。 (3)根据类名获取:类名.class