1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 拷贝属性值_Java 反射拷贝相同的属性值到指定对象中(两种实现方式)

java 拷贝属性值_Java 反射拷贝相同的属性值到指定对象中(两种实现方式)

时间:2023-09-06 09:17:30

相关推荐

java 拷贝属性值_Java 反射拷贝相同的属性值到指定对象中(两种实现方式)

范例:

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;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。