0

我有一个名为的类order我在不同的项目中的不同包中package com.abc 有另一个名为的类,名为ordercom.bcd

两个订单类具有相同的代码获取、设置函数和变量,没有任何变化。

然后我有对象

com.abc.order obj1 = new com.abc.order();
com.bcd.order obj2 = new com.bdc.order();

现在我必须将参数传递给一个函数,它只obj2作为参数我怎样才能将类型转换obj1为类型obj2

我无法更改函数的参数。

期待你的答复。谢谢。

4

5 回答 5

1

看看 Apache Commons BeanUtils 将属性从一个对象复制到另一个对象。

http://commons.apache.org/beanutils/v1.8.3/apidocs/index.html

就像是

BeanUtils.copyProperties(obj2, obj1)

应该做的伎俩。

于 2012-04-09T07:51:06.613 回答
0

您可以将com.bdc.order类设为com.abc.order的子类

你能澄清你为什么要这样做吗?

于 2012-04-09T10:24:57.130 回答
0

您必须复制每个字段。您可以使用 BeanIntrospector 来帮助您执行此操作。

于 2012-04-09T07:35:23.980 回答
0

您可以重载该函数,只需在您的代码中再次键入它,但这次它会com.abc.order取而代之。当然也保留另一个。

如果您定义了这两个函数,它将起作用。问题是重复。我以前从未见过这样的情况,复制一个类并在同一代码中使用这两个类听起来不是好的编码习惯。你能把它们放在一起吗?就像(obj1) obj2?我不认为你可以,但我不是 100% 确定...

于 2012-04-09T07:37:28.893 回答
0

如果可以的话,最好的解决方案是消除两个类中的一个,特别是如果它们是相同的。

否则重命名它们(如果可能,第一个字母大写),如果可以的话。

最后,如果您无法执行上述任何一项,请在一个或两个类上编写转换方法,通过在所有用法中保留它们的包来解决使用的类之间的问题。

import com.abc.order;

abc.order obj1 = new abc.order(); 
bcd.order obj2 = new bdc.order();
于 2012-04-09T07:45:39.113 回答