/**
*
* java 不同对象相对字段不同属性的赋值
* @param objFrom 来源
* @param objTo 赋值
* @return java.lang.Object
*/
public static Object setPropertyCopy(Object objFrom, Object objTo) {
//利用反射获取类属性
Field[] fieldFrom = objFrom.getClass().getDeclaredFields();
Field[] fieldTo = objTo.getClass().getDeclaredFields();
for (Field f : fieldFrom) {
f.setAccessible(true);
//获取属性名
String nameFrom = f.getName();
nameFrom = nameFrom.substring(0, 1).toUpperCase() + nameFrom.substring(1);
Method method = null;
Field t = f;
t.setAccessible(true);
try {
for (Field field : fieldTo) {
//获取属性类型
String type = field.getGenericType().toString();
//获取属性名
String nameTo = field.getName();
nameTo = nameTo.substring(0, 1).toUpperCase() + nameTo.substring(1);
if (Objects.isNull(t.get(objFrom))) {
continue;
}
if (type.equals("class java.lang.Integer") && nameTo.equalsIgnoreCase(nameFrom)) {
method = objTo.getClass().getMethod("set" + nameTo, Integer.class);
method.invoke(objTo, Integer.valueOf(t.get(objFrom).toString()));
}
if (type.equals("class java.lang.Long") && nameTo.equalsIgnoreCase(nameFrom)) {
method = objTo.getClass().getMethod("set" + nameTo, Long.class);
method.invoke(objTo, Long.valueOf(t.get(objFrom).toString()));
}
if (type.equals("class java.math.BigDecimal") && nameTo.equalsIgnoreCase(nameFrom)) {
method = objTo.getClass().getMethod("set" + nameTo, BigDecimal.class);
method.invoke(objTo, BigDecimal.valueOf(Double.parseDouble(t.get(objFrom).toString())));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return objTo;
}```
java 通过反射 不同对象相对字段不同属性的赋值
最新推荐文章于 2023-10-12 22:23:47 发布