2011-05-23 73 views
1

我正在使用一个API,通过它可以访问具有通用接口的特定子集。我在整个代码中使用接口,并根据用户需求将实例解析为适当的子类。我的问题是我需要创建这些对象之一的副本,但我没有访问clone()方法,并且API不提供复制构造函数。 ie:Java:仅当访问某个接口时制作一个对象的副本

ObjectInterface myObject = objectFromParameter.clone(); //Not possible... 

Java中是否有解决方法?

+0

实现类是否也实现了'Cloneable',或者这也是未知的? – 2011-05-23 23:19:22

+0

相关:http://stackoverflow.com/questions/2300692/fill-an-array-with-clones-of-a-single-object – finnw 2011-05-23 23:47:34

+0

不,他们不实施Cloneable不幸的是 – MGA 2011-05-24 15:55:57

回答

2

iYou可以用反射来做你想做的事。或者,如果对象支持序列化,则可以序列化为一个字节数组,然后从中重新构建一个新实例。

+0

序列化和反序列化是一个好主意。但是,如果其中一个实现类是枚举(不太可能),它将无法按预期工作。 – 2011-05-23 23:29:53

+0

是的,我认为反思可能会起作用。不是很优雅,但总比没有好。然而,我想我可能需要重新思考我的整个架构。当我遇到语言限制问题时,通常是因为有更好的方法来实现总体目标。 – MGA 2011-05-24 15:59:31

相关问题