反射概念
反射:将类的各个组成部分封装为其他对象,这就是反射机制
好处:可以在程序运行时操作那些类,比如获取类信息、接口、方法和属性
使用反射
一、获取Class类对象
一、引用类型
1.Class.forName(类的全路径名)
2.对象.getClass()
3.类名.Class
二、基本数据类型
类型名称.Class;
二、操作类对象
一、获取类信息
1.getName():获取类的全路径名
2.getSimpleName():获取类的名称
3.getSuperClass():获取父类的class对象
4.getInterfaces():获取实现的所有接口
二、操作构造方法
调用构造方法来获取对象
getName():获取当前构造方法的名称
getParameterTypes():获取当前构造方法所有参数的类型
newInstance(Object... par):调用当前构造方法,创建一个java对象
三、操作属性
1.获取属性
Field[] getFields():获取所有的公共的属性包括继承的
Field[] getDeclaredFields():获取当前类的所有属性包括私有的
Field getField(String name):获取指定名称的属性 包括继承的
Field getDeclaredField(String name):获取指定名称的属性 包括私有的
2.操作属性
取值:Object get(Object obj)
赋值:void set(Object obj, Object value)
四、操作方法
1.获取方法
Method[] getMethods() 获取所有方法 包括继承的
Method[] getDeclaredMethods() 获取所有方法 包括私有
Method getMethod(String name,Class... para) 获取指定方法 包括继承的
Method getDeclaredMethod(String name,Class... para) 获取指定方法 包括私有的
2.操作方法
Object invoke(Object obj, Object... values)