2011-05-23 19 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

相關問題