-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
反射基础知识
一、概述
反射,简单的说就是把Java类中的各个成分反射成相应的Java类,它的反射机制主要是在运行的时候判断任意一个对象所属的类,同时构造成任意一个类的对象,并且在判断类的时候注意其具有的成员变量和成员方法,在运行的时候并调用其方法。我们也可以这样理解,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。
注意:类是程序的一部分,每一个类都有一个Class对象。
二、Class类
所有的类文件都有共同属性,我们可以向上抽取,把这些共性内容封装成一个类,这个类就叫Class(也就是所谓的描述字节码文件的对象)。Class类中就包含属性有field(字段)、method(方法)、construction(构造函数)。而field中有修饰符、类型、变量名等复杂的描述内容,因此也可以将字段封装称为一个对象。用来获取类中field的内容,这个对象的描述叫Field。同理方法和构造函数也被封装成对象Method、Constructor。要想对一个类进行内容的获取,必须要先获取该字节码文件的对象。该对象是Class类型。其运行过程是当我们想生成这个类的对象的时候,JVM首先会检查这个类的Class对象是否已经加载,如果还没有加载,JVM就会按照类名查找,并将其.class文件载入,比如:Person这个类,它的实例对象是张三。Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。
三、Class类中的方法
1、static Class forName(String className)
返回与给定字符串名的类或接口的相关联的Class对象。
2、Class getClass()
返回的是Object运行时的类,即返回Class对象即字节码对象。
3、Field getField(String name)
返回一个Field对象,它表示此Class对象所代表的类或接口的指定公共成员字段。
4、Field[] getFields()
返回包含某些Field对象的数组,表示所代表类中的成员字段。
5、Constructor getConstructor()
返回Constructor对象,它反映此Class对象所表示的类的指定公共构造方法。
6、Method getMethod(String name,Class… parameterTypes)
返回一个Method对象,它表示的是此Class对象所代表的类的指定公共成员方法。
7、Method[] getMehtods()
返回一个包含某些Method对象的数组,是所代表的的类中的公共成员方法。
8、String getName()
以String形式返回此Class对象所表示的实体名称。
9、String getSuperclass()
返回此Class所表示的类的超类的名称。
10、boolean isArray()
判定此Class对象是否表示一个数组。
11、boolean isPrimitive()
判断指定的Class对象是否是一个基本类型。
12、T newInstance()
创建此Class对象所表示的类的一个新实例。
四、特点
我们知道有九个预定义的Class对象,分别是八种基本类型(byte、short、int、long、float、double、char、boolean)的字节码对象和一种返回值为void类型的void.class。都可以用与之对应的包装类中的TYPE常量表示。由于今天很晚了,我今天的任务还没完成,我先去完成我今天的任务。具体的例子我在下一讲会一一进行举例。