利用 JAVA 反射机制将列表转为对象
注意:对象中的实体Bean、List等非简单类型字段 不能直接转化,需再次调用。
public class TransitionUtil {
//字段属性中的get、set方法前缀
private static final String GET = "get";
private static final String SET = "set";
//过滤非简单类型字段 不转化 多个字段使用,分割
private static final String CLASSNAME = "productList,orderList";
/**
* 使用反射机制把map中的key和value转换成对象的属性值
*
* @param list<Bean> Bean-为你原始List的对象类名称
* @param clazz
* @return
* @throws Exception
*/
public <T> T keyListToBean(List<Bean> list, Class<T> clazz) {
try {
T obj = clazz.getDeclaredConstructor().newInstance();
if (CollectionUtils.isNotEmpty(list)) {
for (Bean entry : list) {
//清修改为对应list中的字段
String propertyName = entry.getField();
//清修改为对应list中的字段
Object value = entry.getFieldValue();
Field field = getClassField(clazz, propertyName);
if (field == null) {
continue;
}
// 获取字段类型
Class<?> fieldType = field.getType();
// 根据字段类型名称进行值的转换
value = convertValType(value, fieldType.getName());
try {
// 调用对象对应的set方法
clazz.getMethod(setMethod(propertyName), field.getType()).invoke(obj, value);
} catch (