我想将一个对象转换为另一个对象,为此我使用Spring BeanUtils。但是一个属性“foo”&#39;类型Bag<X>
(从Hibernate发出)被复制到List<Y>
类型的目标对象中没有问题。
使用了相应的setter:setFoo(List<Y> foo)
,在调试模式下,我看到&#39; foo&#39;属于Bag<X>
类型。
编辑:示例
class Foo {
List<Integer> list = new ArrayList<Integer>() {{add(1);}};
public List<Integer> getList() {
return list;
}
public void setList(List<Integer> list) {
this.list = list;
}
}
class Bar {
List<Double> list = new ArrayList<Double>() {{add(1.0);}};
public List<Double> getList() {
return list;
}
public void setList(List<Double> list) {
this.list = list;
}
}
然后:
Foo foo = new Foo();
Bar bar = new Bar();
Bar bar2 = new Bar();
org.apache.commons.beanutils.BeanUtils.copyProperties(foo, bar);
org.springframework.beans.BeanUtils.copyProperties(foo, bar2);
结果:bar.getList()是一个Double的列表(无修改),bar2.getList()是一个Integer列表(属性从源复制到目标)。
为什么不抛出ClassCastException? Spring如何设置此属性?
谢谢你的帮助。
答案 0 :(得分:0)
这是因为,正如您在此link
中看到的那样public class Bag
extends ODMGCollection
implements org.odmg.DBag, List
袋子实施清单。