一、反射机制是指在运行状态中,对于任何一个类,都能够知道这个类的属性和方法;对于任何一个对象,都能调用他的属性的方法。
二、反射提供的功能:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
生成动态代理
三、通过反射获取类的三种方法:
- 通过Class.forName(); Class<?> forName = Class.forName("reflectt.Person"); 需要抛个ClassNotFoundException 异常
- 通过 类名.Class Class<?> forName = Person.Class
- 通过对象.getClass( ),此方法需要NEW一对象出来
Person person = new Person();Class<?> forName =person.getClass( )
四、反射获取方法:
1.对象.getMethods() 此方法可以获取所有的公共的方法(本类,父类(包括object中的方法),以及接口中的所有方法,同时符合访问修饰符规律(private访问不到))
Class<?> forName = Class.forName("reflectt.Person"); forName .getMethods ( );
- 对象.getDeclareMethods() 来获取当前类的所有方法 不加s是获取当前类的指定方法
- 反射来带对类实例化
类名 对象名=(类名)反射类对象的名.newInstance();
Person person=(Person)forName .newInstance();
person.getMethods();
补充:get Declare xxx为当前类的所有属性
- 通过getInterface()方法获得所有接口 ,返回一个数组(多实现)
- 通过getSuperclass()来获取所有父类,返回单个值(单继承)
- 通过getConstructors(),来获取所有构造方法,返回数组
- 通过getFields()来获取所有公共属性,通过getDeclareFields()来获取当前类的所有属性,返回数组
- 通过getconstructors()来获取构造方法(一般获取后,在进行实例化)