1.反射机制是什么
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2.反射机制能做什么在运行时判断任意一个对象所属的类;
2.1在运行时构造任意一个类的对象;
2.2在运行时判断任意一个类所具有的成员变量和方法;
2.3在运行时调用任意一个对象的方法;
2.4生成动态代理
3.反射应该怎么用
3.1首先要先获取到一个类的基类
object.getClass() 每个对象都有此方法 |
获取指定实例对象的Class |
List list = new ArrayList(); Class listClass = list.getClass(); |
class. getSuperclass() |
获取当前Class的继承类Class |
List list = new ArrayList(); Class listClass = list.getClass(); Class superClass = listClass. getSuperclass(); |
Object.class |
.class直接获取 |
Class listClass = ArrayList.class; |
Class.forName(类名) |
用Class的静态方法,传入类的全称即可 |
try { Class c = Class.forName("java.util.ArrayList"); } catch (ClassNotFoundException e) { e.printStackTrace(); } |
Primitive.TYPE |
基本数据类型的封装类获取Class的方式 |
Class longClass = Long.TYPE; Class integerClass = Integer.TYPE; Class voidClass = Void.TYPE; |
3.2 java反射为我们提供了四大对象用来访问java类中的属性方法构造和动态创建数组
Field 类:代表类的成员变量(也称类的属性)
Method类:代表类的方法
Constructor 类:代表类的构造方法
Array类:提供了动态创建数组,以及访问数组的元素的静态方法
3.2.1FieId类
public Field getDeclaredField(String name) 获取任意指定名字的成员
public Field[] getDeclaredFields() 获取所有的成员变量
public Field getField(String name) 获取任意public成员变量
public Field[] getFields() 获取所有的public成员变量
3.2.2Method类
public Method[] getMethods() 获取所有的共有方法的集合
public Method getMethod(String name,Class<?>... parameterTypes) 获取指定公有方法 参数1:方法名 参数2:参数类型集合
public Method[] getDeclaredMethods() 获取所有的方法
public Method getDeclaredMethod(String name,Class<?>... parameterTypes) 获取任意指定方法