Java comprueba si el valor booleano es nulo

4 minutos de lectura

avatar de usuario
delmon joven

¿Cómo se comprueba si un valor booleano es nulo o no? Entonces, si sé que “hideInNav” es nulo. ¿Cómo evito que siga ejecutándose? Algo como lo siguiente no parece funcionar, pero ¿por qué?

boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";

avatar de usuario
Eich

boolean Solo puede ser true o false porque es un tipo de datos primitivo (+ un boolean el valor predeterminado de las variables es false). Puedes usar la clase Boolean en cambio, si quieres usar null valores. Boolean es un tipo de referencia, esa es la razón por la que puede asignar null a una “variable” booleana. Ejemplo:

Boolean testvar = null;
if (testvar == null) { ...}

  • Entonces, ¿podría hacer algo como: **Boolean hideInNav = parent.getProperties().get(“hideInNav”, false); if(hideInNav != null){ hacer algo } **

    – Delmón Young

    10 de abril de 2013 a las 22:47

  • si, porque entonces hideInNav tiene una referencia a un Boolean objeto y puede ser null (sin referencia asignada). Por lo tanto, puede verificar si la referencia es null.

    – Eich

    10/04/2013 a las 22:50

  • BooleanUtils.isTrue(java.lang.Boolean bool) es lo que uso para verificar su estado en la condición en que Boolean puede ser nulo. commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/…

    – Youness

    8 de marzo de 2019 a las 19:46


  • Sin apache commons: Boolean.TRUE.equals(xxx)

    – Eich

    14/03/2019 a las 12:00


A boolean no puede ser null en Java.

A Booleansin embargo, puede ser null.

si un boolean no se le asigna un valor (por ejemplo, un miembro de una clase), entonces será false por defecto.

  • Correcta Explicación, Gracias.

    – Sajid khan

    16 de marzo de 2019 a las 12:25

avatar de usuario
Joban Dhillon

Lo único que puede ser un null es un no primitivo.

A boolean que solo puede contener TRUE o FALSE es un primitivo. los TRUE/FALSE en la memoria son en realidad números (0 y 1)

0 = FALSO

1 = VERDADERO

Entonces, cuando creas una instancia de un objeto, será nulo
String str; // will equal null

Por otro lado, si instancias una primitiva, se asignará a 0 por defecto.

boolean isTrue; // will be 0

int i; // will be 0

  • La capitalización de Boolean en un Boolean que…” es desafortunado. Una variable de tipo boolean solo puede sostener true y falsesino una variable de tipo Boolean sostiene un Boolean objeto, o null.

    – Josué Taylor

    24 de junio de 2013 a las 17:09


boolean es un tipo primitivo, y por lo tanto no puede ser nulo.

Su tipo en caja, Booleanpuede ser nulo.

La función probablemente está devolviendo un Boolean a diferencia de un booleanpor lo que asignar el resultado a un Boolean-type variable le permitirá probar la nulidad.

avatar de usuario
Tomás

en Java, null solo se aplica a las referencias a objetos; ya que boolean es un tipo primitivo, no se puede asignar null.

Es difícil obtener contexto de tu ejemplo, pero supongo que si hideInNav no está en el objeto devuelto por getProperties()el (¿valor predeterminado?) que ha indicado será false. Sospecho que este es el error que estás viendo, ya que false no es igual a nullasi que hideNavigation está obteniendo la cadena vacía?

Es posible que obtenga mejores respuestas con un poco más de contexto para su ejemplo de código.

null es un valor asignado a un tipo de referencia. null es un valor reservado, lo que indica que una referencia no se parece a una instancia de un objeto.

A boolean no es una instancia de un objeto. Es un tipo primitivo, como int y float. De la misma manera que: int x tiene un valor de 0, boolean x tiene un valor de false.

booleano es un tipo de datos primitivo en Java y los tipos de datos primitivos no pueden ser nulos como otros primitivos int, float, etc.deben contener valores predeterminados si no están asignados.

En Java, solo los objetos pueden asignarse a nulo, lo que significa que el objeto correspondiente no tiene referencia y, por lo tanto, no contiene ninguna representación en la memoria.

Por lo tanto, si desea trabajar con objetos como nulo debería usar la clase booleana que envuelve un valor de tipo booleano primitivo dentro de su objeto.

Estas se llaman clases contenedoras en Java.

Por ejemplo:

Boolean bool = readValue(...); // Read Your Value
if (bool  == null) { do This ...}

¿Ha sido útil esta solución?