如何在 Java 中将对象从一种类型复制到另一种类型?
How to copy an object from one type to another in Java?
我遇到以下情况:
Class A 和 Class B 具有完全相同的源代码。
我有一个来自 A 的数组,必须将它转换为来自 B 的数组,以便将它作为参数传递给参数来自类型 B 的方法。
A[] foo = new A[] ;
//here getBar in certain situations accepts B[], but foo is always A[]
bar = BarFactory.getBar(foo);
我知道这是一个奇怪的场景,但我正在为现有基础架构编写某种适配器,它的架构非常奇怪,我看不出有什么方法可以避免这种转换。我不能更改 B 的来源,也不能对 B 有任何硬引用。我也不能为 A 创建其他方法,因为它必须是 B 的精确副本。
进行这种转换的最佳方法是什么?是否有某种模式可用于创建转换器 class 或类似的东西?
我知道这个问题听起来很愚蠢,但请不要 "kill" 我。我只想用最好的方式去做。
你可以这样做:
B[] b = (B[]) foo
其中 foo 是 class A
的数组
这可能取决于 A 和 B 的复杂程度,但由于您肯定代码是相同的,因此将对象 A 的所有属性复制到新对象 B 应该会产生预期的结果。
Apache 有一个项目 commons-beanutils
可以帮助您完成此任务:
BeanUtils.copyProperties(foo[i], newFoo[i]);
我遇到以下情况: Class A 和 Class B 具有完全相同的源代码。 我有一个来自 A 的数组,必须将它转换为来自 B 的数组,以便将它作为参数传递给参数来自类型 B 的方法。
A[] foo = new A[] ;
//here getBar in certain situations accepts B[], but foo is always A[]
bar = BarFactory.getBar(foo);
我知道这是一个奇怪的场景,但我正在为现有基础架构编写某种适配器,它的架构非常奇怪,我看不出有什么方法可以避免这种转换。我不能更改 B 的来源,也不能对 B 有任何硬引用。我也不能为 A 创建其他方法,因为它必须是 B 的精确副本。
进行这种转换的最佳方法是什么?是否有某种模式可用于创建转换器 class 或类似的东西?
我知道这个问题听起来很愚蠢,但请不要 "kill" 我。我只想用最好的方式去做。
你可以这样做:
B[] b = (B[]) foo
其中 foo 是 class A
的数组这可能取决于 A 和 B 的复杂程度,但由于您肯定代码是相同的,因此将对象 A 的所有属性复制到新对象 B 应该会产生预期的结果。
Apache 有一个项目 commons-beanutils
可以帮助您完成此任务:
BeanUtils.copyProperties(foo[i], newFoo[i]);