2010-03-19 24 views
19

tengo algunos pb. ¡Quiero echar una lista para Collection en javalanzar una lista a una colección

Collection<T> collection = new Collection<T>(mylList); 

pero tengo este error

No se puede crear una instancia de la Colección tipo

+4

I consejos a leer un libro sobre la base de Java. La colección es una interfaz, no una clase. Comprender los diferentes objetivos de ambos es importante. – extraneon

+0

@extraneon +1 Estaba a punto de sugerir lo mismo. Usar colecciones sin una comprensión adecuada de los conceptos básicos no es una buena idea. – helpermethod

Respuesta

45

List<T> ya implementa Collection<T> - ¿Por qué necesitaría para crear uno nuevo?

Collection<T> collection = myList; 

El mensaje de error es absolutamente correcto: no se puede crear una instancia directa de una interfaz. Si desea crear una copia de la lista existente, podría utilizar algo como:

Collection<T> collection = new ArrayList<T>(myList); 
+0

Cuando lo hago Colección collection = new ArrayList (myList); después de poner mi lista en mi Objeto obj.setMyCollection (colección); o en mi obj la colección es definir Colección no ArrayList así que cuando quiero ver el resultado tengo un error – Mercer

+0

@Mercer ¿cuál es la firma del método que está llamando?Una lista debería funcionar en setMyCollection (colección de colecciones), pero no si es, p. setMyCollection (Map collection) :) Y si está setMyCollection (List collection), entonces debes poner algo en el que se declare una Lista: List collection = new ArrayList(); (eliminados genéricos para acortarlo) – extraneon

2

Fundición nunca necesita un new:

Collection<T> collection = myList; 

Incluso no hacen la conversión explícita, porque Collection es un super-tipo de List, por lo que funcionará así.

+0

cuando hago esto, tengo un error No coinciden los tipos: No se puede convertir la lista en la colección Mercer

+0

@Mercer: ¿estás hablando de 'java.util.List' aquí? ¿Podría darnos algún contexto (por ejemplo, cómo se define '')? –

+0

@Mercer: proporcione un ejemplo corto pero * completo * a continuación. –

0

Al no conocer su código, es un poco difícil responder a su pregunta, pero en base a toda la información aquí, creo que el problema es que está tratando de usar Collections.sort en un objeto definido como Colección y ordenar no es compatible con eso.

Primera pregunta. ¿Por qué el cliente se define de manera genérica? ¿Por qué no es una Lista, Mapa, Conjunto o algo un poco más específico?

Si el cliente se definió como Lista, Mapa o Conjunto, no tendría este problema, ya que entonces podría usar directamente Collections.sort (cliente).

HTH

0

No tienen múltiples solusions para convertir la lista a una colección

Solución 1

List<Contact> CONTACTS = new ArrayList<String>(); 
// fill CONTACTS 
Collection<Contact> c = CONTACTS; 

Solución 2

private static final Collection<String> c = new ArrayList<String>(
               Arrays.asList("a", "b", "c")); 

Solución 3

private static final Collection<Contact> = new ArrayList<Contact>(
         Arrays.asList(new Contact("text1", "name1") 
            new Contact("text2", "name2"))); 

Solución 4

List<? extends Contact> col = new ArrayList<Contact>(CONTACTS); 
Cuestiones relacionadas