2012-07-16 19 views
8

¿Por qué el siguiente fragmento no compila?instanceof con la colección genérica

if (mangoList instanceof List<Mango>) { System.out.println("true"); } 
  • Usted no saben que mangoList es un tipo de lista.
  • La palabra clave instanceof solo funciona en tipos primitivos.
  • Solo puede verificar el tipo de colecciones mediante la reflexión.
  • Los tipos genéricos se borran antes del tiempo de ejecución. (Ans)
  • La declaración podría hacer que la lista de mango se establezca en una instancia de una lista.

¿Cuál crees que es la respuesta correcta?

+0

¿Cuál crees que piensas que es la respuesta correcta? ¿Por qué? – Bernard

Respuesta

7

La respuesta correcta es la que marcó ans. Podrá ver que mangoList es List, pero no podría obtener el tipo de argumento borrado. Las opciones de reposición no tienen sentido.

+0

Genial, sí, eso es lo que estaba adivinando ... gracias por la respuesta rápida –

0

Puede, sin embargo, utilizar la instancia de Lista de mangoList para comprobar si se trata de una Lista con algún tipo. Esto es útil si no está seguro si tiene un objeto List o Mango, por ejemplo, pero no distinguirá entre los tipos de listas. Para hacer eso, te aconsejo que verifiques el primer elemento para su tipo.

3

1. Sí "Los tipos genéricos se borran durante el tiempo de ejecución".

2. Así que no podrá saber el tipo de la Lista.

3. Pero usted podrá reconocer que mangoList es una lista.

Cuestiones relacionadas