2010-01-04 6 views
0

Comme je l'ai été informé par PMD, je veux réduire coopling en utilisant des interfaces au lieu de la mise en œuvre ...Couplage lâche: Pouvons-nous utiliser des Interfaces lorsque nous avons besoin de paramètres cloneables?

Dans ce cas, sachant que je besoin d'un cloneable param, puis-je surmonter la clone Dilemma (pas de méthode clone() dans la Cloneable interface)

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

@Allain: Bonjour je suis curieux de savoir ce que vous avez édité dans cette question? Je suis assez nouveau à SO et je ne suis pas familier avec ce concept d'édition de questions ... –

+0

Cliquez sur la phrase 'édité ... il y a' pour voir l'historique des révisions. – trashgod

Répondre

3

Vous n'avez pas besoin de cloner de cette façon; Je ferais comme ça:

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

Notez que cela produit une ArrayList qui allouera suffisamment d'espace pour 110% de la taille de la liste fournie. Donc, ce n'est pas exactement un clone. –

+1

C'est vrai, mais je pense que ça sert le but. – duffymo

+0

@duffymo & Allain: merci !! cela sert parfaitement mon but !!! et c'est aussi intéressant de savoir que ce n'est pas vraiment un clone ... –

1

Je ne sais pas PMD bien, mais ce serait une copie superficielle, au lieu de copie en profondeur.

Questions connexes