如何在Java中将对象从一种类型复制到另一种类型?

时间:2015-09-07 12:24:59

标签: java arrays design-patterns type-conversion converter

我有以下情况: A类和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的精确副本。

进行转换的最佳方法是什么?是否有某种模式用于创建转换器类或类似的东西?

我知道这个问题可能听起来很愚蠢,但请不要“杀死”#34;我。我只想以最好的方式做到这一点。

2 个答案:

答案 0 :(得分:4)

它可能取决于A和B的复杂程度,但由于您肯定代码是相同的,因此将对象A的所有属性复制到新对象B应该会产生预期的结果。

Apache有一个项目commons-beanutils,可以帮助您完成此任务:

BeanUtils.copyProperties(foo[i], newFoo[i]);

答案 1 :(得分:-1)

你可以这样做:

B[] b = (B[]) foo

其中foo是A类数组