数据是
T data
一、对象
对象反射先获取class
Class<? extends Object> tClass = data.getClass();
然后可以直接通过getDeclaredField获取field
field = tClass.getDeclaredField(xxx);
设置可以访问私有变量
field.setAccessible(true);
获取值
field.get(data)
赋值
final.set(data, "1111");
二、map
一般我常用HashMap,和对象不同map不能通过getDeclaredField访问变量,但是可以访问方法,
灵活化区别对象和map可以用类型判断
if(tClass == HashMap.class)
取get方法和put方法来实现反射
Method get = tClass.getMethod("get", Object.class); Method put = tClass.getMethod("put", Object.class, Object.class);
get取值
get.invoke(data, "xxx");
put放值
put.invoke(data, "xxx", "1111");