java反射
反射概念
反射的概念
反射是指程勋能够运行时,观察,检测,修改自己运行时状态和行为的一种能力、特性
反射的机制
1.反射机制是java语言的特性之一,是java被视为动态(或准动态)语言的一个关键特性。
2.在运行状态中,动态获取类的信息以及动态调用对象的功能称为java语言的反射机制
反射的作用
1.在运行时判断任意一个 对象所属的类
- 在运行时判断任意一个 对象所含有的属性和方法
3.在运行时构造任意一个 类的对象 - 在运行时调用任意一个对象的方法
- 生成动态代理
反射常用的API
1.java.lang.Class 类 :反射的核心类,反射的所有操作都是围绕该类来生成的。通过Class类可以获取类的属性,方法等内容信息
2.Java.lang.reflect.Constuctot:表示类的构造方法
3.Java.lang.reflect.Field类:表示类的构造属性,可以获取和是指类中属性的值
4.Java.lang.reflect.Method类:表示类的方法,可以获取类中方法的信息或执行方法
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
反射的作用
使用反射的基本步骤
- 导入java.lang.reflect包中的相关类
- 获取需要操作的类的Class实例
- 调用Class实例的方法获取Field,Method等实例
- 使用反射API操作实例成员
Class类
获取类的实例
1.使用类.getclass获得
Class c1=User.class;
2 使用对象.getclass()获得;
User u=new User();
Class c2=(Class) u.getClass();
3 class.forName(参) 参:类全名;
Class c3=Class.forName(“pm.User”);
获取类型的基本信息
获取属性信息
获取方法的具体信息
获取构造方法信息
反射方式创建类的实例
基于图纸类创建
Class c=User.class;
User user1=c.newInstance();
user1.setName(“李俊阳”);
基于图纸类的构造函数创建
Class c1=User.class;
Constructor constructor=c1.getDeclaredConstructor();
User user2=(User) constructor.newInstance();
user2.setName(“武教博”);
通过反射访问实例的字段
//1.操作user类的属性
//先获得user类的属性
Class<User> c=User.class;
User user=(User)c.newInstance();
Field field=c.getDeclaredField("name");
field.setAccessible(true);
field.set(user,"刘文龙");
通过反射访问实例的方法
//先获得User类的方法对象
Method method=c.getDeclaredMethod("getName");
String name=(String) method.invoke(user);
System.out.println(name);