**
反射机制(reflect)
**
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
java反射机制是java特性之一,反射是构建框架技术的基础所在。
三个动态性质
- 运行时生成对象
- 运行期间调用方法
- 运行时更改属性
可以实现:
判断任意一个对象所属的类
构造任意一个对象所属的类
判断任意一个类具有的方法和属性
调用任意对象的方法
三种获取Class方式
-
通过对象获取
Student student=new Student(); Class c=student.getClass()
-
通过类获取
Class c=String.Class;
-
根据Class类中静态方法获取
Class c=Class.forname("包名.类名");
//一个类只有一个Class对象
java反射常用的API
Class类:反射的核心类,所有操作围绕而生
Field类:类的属性,获取或设置属性
Method类:类的方法,获取或执行方法
constructor类:类的构造方法
使用步骤
- 导入java.lang.reflect.*.
- 获得操作的类的java.lang.class对象.
- 调用class方法获取Field、Methid等对象
- 使用反射API进行操作
总结
反射是框架设计的灵魂
(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))