反射:
在运行阶段,非编译阶段
在不知道某个实例对象是什么类型的时候
反射机制使得能够通过这个实例对象.class() 返回的 Class对象,来获取到这个类的属性,方法。
确保了代码的灵活性,便于封装工具类而非把代码写死.
场景:
将实体类转换成map的方法,可以用反射写个封装,不同的实体类直接调用就能返回List<map>
通过实体类去构造xml的时候,用反射机制,可以通过反射去获取对象的属性,
避免了修改实体类属性从而需要改动xml构造方法代码,使我们更专注于业务。
demo:G:\project\demo\basic\Reflection
api
#获取class
Class hero = heroPojo.getClass();
--Class 常用 api--
#获取所有申明的属性
getDeclaredFields()
#获得public的字段
getFields()
#获得所有public方法
getMethods()
#获得声明的方法
getDeclaredMethods()
--Method 常用 api(不推荐,需要过滤get,set和大小写) --
获取实例对象的属性值
Method.invoke(obj)
--Field 常用 api --
获取实例对象的属性值(推荐)
Field.setAccessible(true);
Field.get(obj)