Si te encuentras con algún detalle que te causa duda puedes dejarnos un comentario y haremos todo lo necesario de ayudarte lo mas rápido que podamos.
Solución:
Usar boolean
en vez de Boolean
cada vez que puedas. Esto evitará muchos NullPointerException
s y hacer que su código sea más robusto.
Boolean
es útil, por ejemplo
- para almacenar valores booleanos en una colección (Lista, Mapa, etc.)
- para representar un booleano anulable (procedente de una columna booleana anulable en una base de datos, por ejemplo). Él null valor podría significar “no sabemos si es true o false” en este contexto.
- cada vez que un método necesita un Objeto como argumento, y necesita pasar un valor booleano. Por ejemplo, al usar la reflexión o métodos como
MessageFormat.format()
.
casi nunca uso Boolean
porque su semántica es vaga y oscura. Básicamente tienes una lógica de 3 estados: true, false o desconocido. A veces es útil usarlo cuando, por ejemplo, le dio al usuario una opción entre dos valores y el usuario no respondió en absoluto y realmente desea conocer esa información (piense: columna de base de datos anulable).
No veo ninguna razón para convertir de boolean
para Boolean
ya que introduce sobrecarga de memoria adicional, posibilidad de NPE y menos tipeo. Típicamente uso incómodo BooleanUtils.isTrue()
para hacer mi vida un poco más fácil con Boolean
.
La única razón de la existencia de Boolean
es la capacidad de tener colecciones de Boolean
tipo (los genéricos no permiten boolean
así como todas las demás primitivas).
Vaya, ¿qué diablos? ¿Soy solo yo o todas estas respuestas son incorrectas o al menos engañosas?
La clase Boolean es un contenedor alrededor del tipo primitivo booleano. El uso de este contenedor es poder pasar un booleano en un método que acepta un objeto o genérico. es decir, vectorial.
Un objeto booleano NUNCA puede tener un valor de null. Si tu referencia a un booleano es nullsimplemente significa que su valor booleano nunca se creó.
Puede encontrar esto útil: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Boolean.java
UN null La referencia booleana solo debe usarse para activar una lógica similar a la que tenga cualquier otra null referencia. Usarlo para la lógica de tres estados es torpe.
EDITAR: aviso, que Boolean a = true;
es una declaración engañosa. Esto realmente equivale a algo más cercano a Boolean a = new Boolean(true);
Consulte el autoboxing aquí: http://en.wikipedia.org/wiki/Boxing_%28computer_science%29#Autoboxing
Quizás de ahí viene gran parte de la confusión.
EDIT2: Lea los comentarios a continuación. Si alguien tiene una idea de cómo reestructurar mi respuesta para incorporar esto, hágalo.
Comentarios y puntuaciones
Si para ti ha sido de ayuda este post, nos gustaría que lo compartas con el resto seniors de esta manera contrubuyes a difundir nuestro contenido.