参考示例之“复制对象|拷贝对象|BeanUtils工具类学习”
// 设置需要拷贝的字段 Set<String> targetSet = new HashSet<>(); targetSet.addAll(Arrays .asList("totalRefund", "actualAdvertisingCost", "expensesOfTaxation")); // 调用拷贝方法 copyProperties(combinationIncomeCosts.get(0), resultBeneficiary, targetSet);
将A对象的所有数据拷贝到B对象中
前提:保证两个对象的字段相同,B对象可以比A对象多字段
package org.springframework.beans;
BeanUtils.copyProperties(A, B);
将A对象的部分值数据拷贝到B对象中
这里可以调用方案,排除掉部分不需要的字段
import org.springframework.beans.BeanUtils;
BeanUtils.copyProperties(A, B, 排除的字段[可以数组,列表等]);
还可以优化,只要某些字段
// 设置需要拷贝的字段
Set<String> targetSet = new HashSet<>(); targetSet.addAll(Arrays.asList("totalRefund", "actualAdvertising", "expenses", "compensate"));
// 调用自定义拷贝方案 copyProperties(A, B, targetSet);
/** * 赋值指定字段值 * * @param src * @param target * @param fieldSet */ public static void copyProperties(Object src, Object target, Set<String> fieldSet) {
// 过滤出所有不要的字段 String[] filteredPropertyNames = Arrays.stream(BeanUtils.getPropertyDescriptors(src.getClass())) .map(PropertyDescriptor::getName).filter(e -> !fieldSet.contains(e)).toArray(String[]::new);
// 实际上还是调用了排除的方案,将不要的字段加入到排除中 BeanUtils.copyProperties(src, target, filteredPropertyNames); }
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王子威
* 我的网易邮箱:wzw_1314_520@163.com