2010-01-04 6 views
0

Как я посоветовал PMD, я хочу, чтобы уменьшить coopling с помощью интерфейсов вместо реализации ...Loose connection: Можем ли мы использовать интерфейсы, когда нам нужны параметры cloneables?

В этом случае, зная, что мне нужно Cloneable параметров, не могу преодолеть clone Dilemma (нет clone() метода в Cloneable интерфейс)?

public MyConstructor(ArrayList<E> myParam) { 
    this.myAttribute = (ArrayList<E>) myParam.clone(); 
} 
+0

@Allain: Здравствуйте, мне любопытно узнать, что вы редактировали в этом вопросе? Я новичок в SO, и я не знаком с этой концепцией редактирования вопросов ... –

+0

Нажмите на фразу 'edit ... ago', чтобы просмотреть историю изменений. – trashgod

ответ

3

Вам не нужно клонировать таким образом; Я хотел бы сделать это следующим образом:

public MyConstructor(List<E> myParam) 
{ 
    this.myAttribute = new ArrayList<E>(myParam); 
} 
+1

Обратите внимание, что это создает ArrayList, который выделяет достаточно места для 110% размера предоставленного списка. Таким образом, это не совсем клон. –

+1

Правда, но я считаю, что это служит цели. – duffymo

+0

@duffymo & Allain: thx !! он отлично служит моей цели !!! и также интересно узнать, что это не совсем клон ... –

1

Я не знаю, PMD хорошо, но это было бы неполную копию, а не глубокой копии.