BeanUtils.copyProperties
这个方法常用来对象映射,以减去繁琐的get set过程
copyProperties(源对象,目标对象, 可编辑的类,可以忽略的属性)
第三个我们需要看一下,他的源码是这样写的
Class<?> actualEditable = target.getClass();if (editable != null) {if (!editable.isInstance(target)) {throw new IllegalArgumentException("Target class [" + target.getClass().getName() + "] not assignable to Editable class [" + editable.getName() + "]");}actualEditable = editable;}
其实这个还是有他存在的必要的,尤其是当出现父类子类的情况下
例如,我现在有一个子类,我想复制自己的字段给另一个对象,但是只需要传父类的属性,这里有两种做法:
- 填写第四个参数
- 第三个参数里面写父类.class
这里我有一个父类Blog,有一个属性id;和一个子类BlogDetail有一个属性content
BlogDetail d = new BlogDetail();BlogDetail d2 = new BlogDetail();BlogDetail d3 = new BlogDetail();d.setId(1L);d.setContent("123");BeanUtils.copyProperties(d, d2, Blog.class);BeanUtils.copyProperties(d, d3);System.out.println(d2);System.out.println(d3);
最后结果如下: