2011-05-26 48 views
0

我有一個擁有接口集合的類,我需要克隆此對象。我不想使用克隆接口,並希望使用複製構造函數來完成任務。我做了一些Google搜索,似乎無法找到答案。例如,我知道還有其他方法可以用複製方法來做到這一點,但我寧願不將它添加到我的界面中。謝謝你的幫助。使用Java接口複製構造函數

public Component(Component source){ 
for (Behavior behavior : behaviors) { 
    behaviors.add(new Behavior(behavior)); 
}} 

回答

1

您無法在接口中定義構造函數,因此您必須使用克隆或複製方法。

6

您不能將構造函數添加到接口。這是無法完成的。

你的本能,以避免克隆是一個很好的。您可能需要一個虛擬工廠方法來決定要返回的通用接口的具體類型。

3

你既可以:

  1. 添加複製方法的Behavior接口,使每個實現可以選擇什麼返回(甚至有可能是實例本身,如果它是不可變的,見下面第2點)。
  2. 要求Behavior是不可變的,所以你不需要複製它。雖然這可以說是難以執行。
  3. 使Behavior成爲(抽象)類,並向其添加一個複製構造函數。不過,這可能是您的層次結構中的一個缺陷。
0

恕我直言,最簡潔的方法是覆蓋Object的clone()方法爲每個行爲接口實現。