范例:
public class ReflectUtils {
private ReflectUtils() {};
/**
* 对象反射赋值
*
* @param source 目标对象
* @param target 赋值对象
*/
public static void copyBeanFieldsValue(Object source, Object target) {
Field[] fields = target.getClass().getDeclaredFields();
if (fields != null && fields.length > 0) {
for (int x = 0; x < fields.length; x++) {
Object value = BeanUtil.getFieldValue(source, fields[x].getName());
try {
Method setterMethod = target.getClass()
.getDeclaredMethod("set" + StringUtils.capitalfor(fields[x].getName()), fields[x].getType());
value = TypeUtils.castToJavaBean(value, fields[x].getType());
setterMethod.invoke(target, value);
} catch (Exception e) {
}
}
}
}
/**
* 通过存储器赋值
*
* @param source 目标对象
* @param target 赋值对象
*/
public static void copyProperties(Object source, Object target) {
PropertyDescriptor[] propertyDescriptors = BeanUtil.getPropertyDescriptors(target.getClass());
if (propertyDescriptors != null && propertyDescriptors.length > 0) {
for (int x = 0; x < propertyDescriptors.length; x++) {
Object fieldvalue = BeanUtil.getFieldValue(source, propertyDescriptors[x].getName());
try {
Object castValue = TypeUtils.castToJavaBean(fieldvalue, propertyDescriptors[x].getPropertyType());
propertyDescriptors[x].getWriteMethod().invoke(target, castValue);
} catch (Exception e) {
}
}
}
}
}
public class StringUtils {
private StringUtils() {};
/**
* 首字母大写替换
*
* @param name 指定替换字符串
* @return 范例:
*/
public static String capital(String name) {
if (StrUtil.isBlank(name)) {
return name;
}
if (name.length() == 1) {
name = name.toUpperCase();
} else {
name = name.substring(0, 1).toUpperCase() + name.substring(1);
}
return name;
}
/**
* 首字母大写
*
* @param name 指定替换字符串
* @return 范例:
*/
public static String capitalFor(String name) {
if (StrUtil.isBlank(name)) {
return name;
}
if (name.length() == 1) {
name = name.toUpperCase();
} else {
String str = name.substring(0, 2);
if (Character.isLowerCase(str.charAt(0))) { // 第一个是否为小写
if (Character.isUpperCase(str.charAt(1))) { // 第二个是否为大写
return name;
} else {
name = name.substring(0, 1).toUpperCase() + name.substring(1);
}
}
}
return name;
}
}
如果觉得《java 拷贝属性值_Java 反射拷贝相同的属性值到指定对象中(两种实现方式)》对你有帮助,请点赞、收藏,并留下你的观点哦!