j'ai du pb. Je veux lancer une liste à collectionner en Java
Collection<T> collection = new Collection<T>(mylList);
mais j'ai cette erreur
Impossible d'instancier le type Collection
List<T>
implémente déjà Collection<T>
- pourquoi devriez-vous en créer un nouveau?
Collection<T> collection = myList;
Le message d'erreur est tout à fait correct: vous ne pouvez pas instancier directement une interface. Si vous voulez créer une copie de la liste existante, vous pouvez utiliser quelque chose comme:
Collection<T> collection = new ArrayList<T>(myList);
Le casting n'a jamais besoin d'une new
:
Collection<T> collection = myList;
Vous ne rendez même pas explicite la distribution, car Collection
est un super-type de List
, donc cela fonctionnera comme cela.
Il existe plusieurs solutions pour convertir une liste en une collection
Solution 1
List<Contact> CONTACTS = new ArrayList<String>();
// fill CONTACTS
Collection<Contact> c = CONTACTS;
Solution 2
private static final Collection<String> c = new ArrayList<String>(
Arrays.asList("a", "b", "c"));
Solution 3
private static final Collection<Contact> = new ArrayList<Contact>(
Arrays.asList(new Contact("text1", "name1")
new Contact("text2", "name2")));
Solution 4
List<? extends Contact> col = new ArrayList<Contact>(CONTACTS);
Première collection est Interface de classe et vous ne pouvez pas instancier. API de collection
List Ver APi est également une classe d'interface.
Il peut être si
List list = Collections.synchronizedList(new ArrayList(...));
ver entrez la description du lien ici
Collection collection= Collections.synchronizedList(new ArrayList(...));
Ne connaissant pas votre code, il est un peu difficile de répondre à votre question, mais compte tenu de toutes les informations ici, je pense que le problème est que vous essayez d'utiliser Collections.sort en transmettant un objet défini en tant que Collection et que le tri ne prend pas en charge. cette.
Première question. Pourquoi le client est-il défini de manière aussi générique? Pourquoi n'est-ce pas une liste, une carte, un ensemble ou quelque chose d'un peu plus spécifique?
Si le client était défini comme une liste, une carte ou un ensemble, le problème ne se poserait pas car vous pourrez alors utiliser directement Collections.sort (client).
HTH