您可以使用该
BeanWrapper技术。这是一个示例实现:
public static void copyProperties(Object src, Object trg, Iterable<String> props) { BeanWrapper srcWrap = PropertyAccessorFactory.forBeanPropertyAccess(src); BeanWrapper trgWrap = PropertyAccessorFactory.forBeanPropertyAccess(trg); props.forEach(p -> trgWrap.setPropertyValue(p, srcWrap.getPropertyValue(p)));}或者,如果你真的, 真的 想用
BeanUtils,这里有一个解决方案。反转逻辑,通过将完整属性列表与包含项进行比较来收集排除项:
public static void copyProperties2(Object src, Object trg, Set<String> props) { String[] excludedProperties = Arrays.stream(BeanUtils.getPropertyDescriptors(src.getClass())) .map(PropertyDescriptor::getName) .filter(name -> !props.contains(name)) .toArray(String[]::new); BeanUtils.copyProperties(src, trg, excludedProperties);}


