2011-08-05 11 views
6

que intentan utilizar la lista en lugar de ListaJava Colección <Object> o Colección <?>

List<?> list = new ArrayList<Integer>(); 
... 
list.add(1); //compile error 

lo que hago mal y cómo echo nuevo valor a entero? ¿Tal vez debería usar List en mi proyecto?

+0

¿Hay alguna razón por la que no se puede declarar la lista como List ? –

+0

Try List list = new ArrayList (); – nidhin

+0

@nidhin - mala idea usar tipos sin procesar –

Respuesta

10

List<?> significa una lista de algún tipo, pero no sabemos qué tipo. Solo puede colocar objetos del tipo correcto en una lista, pero como no conoce el tipo, en efecto, no puede poner nada en dicha lista (que no sea null).

No hay forma de evitar esto, aparte de declarar su variable como List<Integer>.

+0

¿Hay alguna vez para usar 'Generic '? ¿Sería para las operaciones en la clase genérica que no son relevantes para el tipo de objeto que contiene? (¿Y por qué tales operaciones alguna vez serían útiles de forma aislada?) –

+1

Sí. Por ejemplo, 'Clase ' tiene bastantes métodos que no hacen uso del parámetro tipo. Para 'List ' (que es lo mismo que 'List ', puede obtener el tamaño, compararlo con otras listas (o no listas), y obtener 'Object's fuera de él. Simplemente nada tipo-específico. –

1
List<Integer> list = new ArrayList<Integer>(); 
... 
list.add(1); 
4
List<Integer> list = new ArrayList<Integer>(); 

El tipo genérico siempre tiene que ser la misma.

1
List<?> list = new ArrayList<Integer>(); 

? significa algún tipo, debe especificar el tipo como entero. entonces la sintaxis correcta sería:

List<Integer> list = new ArrayList<Integer>(); 
Cuestiones relacionadas