gpt4 book ai didi

java - BeanUtils.copyProperties 和嵌套列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:00 34 4
gpt4 key购买 nike

我想将一个对象转换为另一个对象,为此我使用 Spring BeanUtils。但是 Bag<X> 类型的属性“foo” (从 Hibernate 发出)被复制到 List<Y> 类型的目标对象中没有问题。

使用相应的setter:setFoo(List<Y> foo)在 Debug模式下,我看到“foo”的类型为 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 如何设置这个属性?

感谢您的帮助。

最佳答案

这是因为,正如您在 link 中看到的那样

public class Bag
extends ODMGCollection
implements org.odmg.DBag, List

Bag 实现列表。

关于java - BeanUtils.copyProperties 和嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717779/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com