我有以下情况: 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;我。我只想以最好的方式做到这一点。
答案 0 :(得分:4)
它可能取决于A和B的复杂程度,但由于您肯定代码是相同的,因此将对象A的所有属性复制到新对象B应该会产生预期的结果。
Apache有一个项目commons-beanutils
,可以帮助您完成此任务:
BeanUtils.copyProperties(foo[i], newFoo[i]);
答案 1 :(得分:-1)
你可以这样做:
B[] b = (B[]) foo
其中foo是A类数组