Java反射
1、创建缓存池,可以加快访问速度
private static final Map<String, List<Field>> CACHE = new HashMap<String, List<Field>>();
2、获取实体类的所有属性,返回Field列表
private List<Field> getFieldOfClass(Class<?> clazz) {
List<Field> fields = CACHE.get(clazz.getName());
if (fields == null) {
Field[] fieldArr = clazz.getDeclaredFields();
fields = new ArrayList<Field>(fieldArr.length);
for (Field each : fieldArr) {
each.setAccessible(true);
fields.add(each);
}
CACHE.put(clazz.getName(), fields);
}
return fields;
}
3、为对象设置值
public <T> T setObjVal(T obj) {
if (obj == null) {
return null;
}
List<Field> fields = getFieldOfClass(obj.getClass());
for (int j = 0, size = fields.size(); j < size; j++) {
try {
Field each = fields.get(j);
each.set(obj, "参数值");
} catch (Exception e) {
e.printStackTrace();
}
}
return obj;
}