Java中的对象复制

Java中的对象复制,java,Java,在package com.abc 我有另一个名为order的类,它位于不同项目的不同包中,名为com.bcd 两个order类都有相同的代码get、set函数和变量,没有任何更改 那我就有东西了 com.abc.order obj1 = new com.abc.order(); com.bcd.order obj2 = new com.bdc.order(); 现在我必须向函数传递参数,它只接受obj2作为参数 如何将obj1类型转换为obj2 我无法更改函数的参数 期待您的回复。 谢谢。您必

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

两个order类都有相同的代码get、set函数和变量,没有任何更改

那我就有东西了

com.abc.order obj1 = new com.abc.order();
com.bcd.order obj2 = new com.bdc.order();
现在我必须向函数传递参数,它只接受
obj2
作为参数 如何将
obj1
类型转换为
obj2

我无法更改函数的参数

期待您的回复。
谢谢。

您必须复制每个字段。您可以使用beanintrostect来帮助您完成此操作。

您可以通过在代码中再次键入该函数来重载该函数,但这次它将使用
com.abc.order
的实例。当然,另一个也留着


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

如果可以的话,最好的解决方案是删除这两个类中的一个,尤其是在它们相同的情况下

否则,如果可以,请再次重命名它们(第一个字母大写,如果可能)

最后,如果您不能执行上述任一操作,请在一个或两个类上编写一个转换方法,通过在所有用法中保留它们的包,在使用的类之间进行解析

import com.abc.order;

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

看看Apache Commons BeanUtils,它可以将属性从一个对象复制到另一个对象

差不多

BeanUtils.copyProperties(obj2, obj1)

应该会这样做。

您可以创建com.bdc.order的子类com.abc.order


你能解释一下你为什么要这样做吗

您能否将您的
abc.Order
更改为扩展
bcd.Order
?(类名应该是大写的,所以如果可能,请使用
Order
而不是
Order
)。您编写代码的原因是什么?我认为这里有点不对劲。我有一个Web服务,它可以获取和设置细节,但是其中的一部分必须移动到EJB,以便两者都具有相同的类。如果所有代码都必须移动到EJB,那么项目中需要进行大量更改。