2011-01-31 13 views
5

List<String> funciona con o sin pero List<int> no. Siempre me he preguntado sobre esto.¿<String> hace algo?

+1

con o sin qué? Probablemente sea porque String es una clase e int es un tipo nativo. – Raynos

+0

con o sin qué? ooops, 3 segundos demasiado tarde ^^ –

+2

http://en.wikipedia.org/wiki/Generics_in_Java –

Respuesta

2

Las listas (y otras colecciones) pueden contener solo objetos, no tipos primitivos. Entonces puede usar List<Integer> pero no List<int>. String también es un objeto, por eso funciona.

Y con respecto a la diferencia entre List y List<String>: la diferencia existe solo durante la compilación. En tiempo de ejecución, ambas listas son idénticas.

+0

Gracias por eso. ¿Así que simplemente lo arroja como un tipo de objeto String? –

+0

@CoolBeans: eso no tiene sentido. Si está usando Generics, no necesita yesos. Ese es todo el punto. El compilador insertará los moldes y la * garantía * al verificar que no hay ClassCastExceptions. Y la única manera en que * puede obtener * una ClassCastException es haciendo * un reparto. – EJP

+0

@EJP: tienes razón. Mi comentario fue al revés. Quise decir que no deberías hacer una lista alguna = nueva ArrayList <>(); sin especificar un tipo (genérico o no). Eliminaré mi comentario. ¡¡¡Gracias!!! – CoolBeans

5

No puede usar tipos primitivos (byte, short, int, etc). Debe utilizar el tipo de envoltura que, en este caso, es Integer

List<Integer> 

Este tipo de fundición se llama genéricos, y usted puede comenzar a aprender más sobre ellos here.

3

List<int> no funciona porque los genéricos de Java no se ocupan de tipos primitivos: solo objetos (o subclases de los mismos, como Integer). No es necesario que especifique el parámetro de tipo al usar una clase genérica, pero el compilador emitirá una advertencia y se le pedirá que se encargue de todo el tipo de conversión (incluido el manejo del posible ClassCastExceptions) y de usted mismo.

Cuestiones relacionadas