




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Java反射技术总结 第一篇:Java反射技术总结Java反射技术知识点总结1、反射:反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。2、Java语言的反射机制主要提供以下功能:在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时调用任意一个类所具有的成员变量和方法生成动态代理3、在java.lang.reflect包当中提供了实现反射机制的类:Class类:代表一个类。Field类:代表类的成员变量,也称为类的属性。Method类:代表类的方法。Constructor类:代表类的构造方法。Array类:该类提供动态地生成和访问java数组的方法。4、Class实例:Class类和其它的类一样继承自Object类,Class对象包含了与类相关的信息。事实上,Class对象就是用来创建类的所有的“普通”对象的。类是程序的一部分,每个类都有一个Class对象。换言之,每当编写并且编译了一个新类时,就会产生一个Class对象(恰当地说,该对象被保存在一个同名的.class文件中)。在运行时,当我们想生成这个类的对象时,运行这个程序的java虚拟机(JVM)首先检查这个类的Class对象是否已经加载。如果尚未加载,JVM就会根据类名查找.class文件,并将其载入。一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象。这些对象都会对应于同一个Class对象。要想使用反射,首先需要获得待处理类或对象所对应的Class实例。获取Class实例的四种方式:第一种:调用类本身的.class属性。Classc=String.class;第二种:调用对象的getClass()方法获取该对象的Class实例。Stringstr=“abc”;Classc=str.getClass();第三种:使用Class类的静态方法forName(),用类的全名(包名.类名)来获取一个Class实例。Class.forName(“java.lang.String”);第四种:对于基本数据类型的封装类,可以采用.TYPE来获取相对应的基本数据类型的Class实例。ClassintClass=Integer.TYPE5、Class类的其它方法:ObjectnewInstance()使用Class对象生成该类的新实例。它调用了缺省(无参数)的类构造方法创建一个新的对象。所以使用newInstance()方法创建的类必须有一个无参数的构造方法。booleanisInstance()该方法提供了一种动态地调用instanceof运算符的途径。Class[]getInterfaces()该方法返回Class对象的数组,这些对象代表的是某个Class对象所包含的接口ClassgetSuperclass()该方法获取该Class对象的直接基类。这个方法自然也是返回一个Class引用,所以可以进一步查询其基类。这意味着在运行时,可以找到某个对象的完整类层次结构。6、获得类的构造方法可以调用Class类对象的以下方法:ConstructorgetConstructor(Class[]params):获得类的指定参数类型的公共构造方法。Constructor[]getConstructors():获得类的所有公共构造方法。ConstructorgetDeclaredConstructor(Class[]params):获得类的指定参数类型的构造方法(与访问级别无关)。Constructor[]getDeclaredConstructors():获得类的所有构造方法(与访问级别无关)7、获得类的成员变量可以调用Class类对象的以下方法:FieldgetField(Stringname):获得指定的公共字段(属性)Field[]getFields():获得类的所有公共字段(属性)FieldgetDeclaredField(Stringname):获得类声明的指定的字段(与访问级别无关)Field[]getDeclaredFields():获得类声明的所有字段8、获得类的成员方法可以调用Class类对象的以下方法:MethodgetMethod(Stringname,Class[]params):获取包含指定的参数类型及名称的公共方法Method[]getMethods():获得类的所有公共方法MethodgetDeclaredMethod(Stringname,Class[]params):获取包含指定的参数类型及名称的类声明的方法Method[]getDeclaredMethods():获得类声明的所有方法9、使用反射来动态的调用类的方法,需要使用java.lang.reflect.Method中

绮兰****文章
实名认证
内容提供者


最近下载