public static <T, E> T convertBean(E param, Class<T> tClass) {
try {
if (param == null) {
return tClass.newInstance();
}
T instance = tClass.newInstance();
BeanUtils.copyProperties(param, instance);
return instance;
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
public static <E, T> Lis`t<T> convertList(List<E> sources, Class<T> c) {`
if (CollectionUtils.isEmpty(sources)) {
return new ArrayList<T>();
}
List<T> list = new ArrayList<T>();
for (E source : sources) {
list.add(convertBean(source, c));
}
return list;
}
public static Map<String, Object> bean2Map(Object obj, boolean nonNull) {
if (obj == null) {
return null;
}
Class clazz = obj.getClass();
Field[] fields = clazz.getFields();
Map<String, Object> map = new HashMap<>();
for (Field field : fields) {
try {
int modifiers = field.getModifiers();
if (Modifier.isFinal(modifiers) || Modifier.isStatic(modifiers)) {
continue;
}
String key = field.getName();
field.setAccessible(true);
Object o = field.get(obj);
if (nonNull && o == null) {
continue;
}
map.put(key, o);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Field[] declaredFields = clazz.getDeclaredFields();
for (Field declaredField : declaredFields) {
int modifiers = declaredField.getModifiers();
if (Modifier.isPublic(modifiers) || Modifier.isFinal(modifiers) || Modifier.isStatic(modifiers)) {
continue;
}
String key = declaredField.getName();
try {
PropertyDescriptor pd = new PropertyDescriptor(key, clazz);
Method rM = pd.getReadMethod();
Object value = rM.invoke(obj);
map.put(key, value);
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
return map;
}