2011-07-14 16 views
21

Quizás es una pregunta para principiantes, pero no entiendo por qué cuando trato de hacer algo como Map<String, boolean> mi IDE grita diciendo "Error de sintaxis en el token" booleano ", Dimensiones esperadas después de este token ", pero con Boolean funciona perfecto. ¿Alguien puede explicarme por qué es así? ¡¡Gracias por adelantado!!Java Map no aceptó "boolean"

+3

La respuesta está en esta pregunta más general: [¿Por qué los genéricos no admiten tipos primitivos?] (Http://stackoverflow.com/questions/2721546/why-dont-generics-support-primitive-types) –

+1

Más 'Map ' puede ser reemplazado por un 'Set ' –

Respuesta

42

En pocas palabras: los genéricos de Java no funcionan con argumentos de tipo primitivo, solo clases. De la misma manera, no puede usar List<int>, solo List<Integer>.

Consulte el relevante Java Generics FAQ entry para obtener más información.

26

Use Boolean en lugar de booleano. El mapa solo puede contener objetos y boolean es un tipo primitivo, no un objeto. Boolean es envoltorio de objeto booleano.

12

Además de otras respuestas, tenga en cuenta que puede utilizar Map<String, Boolean> y les utilizar casi como si fuera Map<String, boolean>. Es decir, podrá put y getboolean s (primitiva). Busca el autoboxing para obtener una explicación de por qué funciona. Hay algunas trampas de usar el autoboxing, pero en casos simples debería funcionar.