Forma abreviada para la declaración if de Java

4 minutos de lectura

avatar de usuario
Makky

Sé que hay una manera de escribir un Java if declaración en forma abreviada.

if (city.getName() != null) {
    name = city.getName();
} else {
    name="N/A";
}

¿Alguien sabe cómo escribir la forma abreviada de las 5 líneas anteriores en una línea?

  • Google operador ternario en java 🙂

    – CoolBeans

    17/01/2012 a las 17:00


  • Supongo que tienes tu if lógica al revés.

    – ENP

    17/01/2012 a las 17:00


  • if (city.getName()!=null){name = city.getName();}else{name="N/A"}

    –Steve Kuo

    17 de enero de 2012 a las 17:03

  • @SteveKuo Hay tres espacios que puede eliminar. 😉

    – Peter Lawrey

    17 de enero de 2012 a las 17:05

  • if (city.getName()!= null) name = city.getName(); else name="N/A";

    – Anton Dozortsev

    2 de enero de 2014 a las 14:37


avatar de usuario
duffymo

Utilice el operador ternario:

name = ((city.getName() == null) ? "N/A" : city.getName());

Creo que tienes las condiciones al revés: si es nulo, quieres que el valor sea “N/A”.

¿Qué pasa si la ciudad es nula? Su código * golpea la cama en ese caso. Agregaría otro cheque:

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());

  • +1, aunque tienes paréntesis redundantes. hubiera escrito: name = city.getName() == null ? "N/A" : city.getName();

    – Andrés F.

    17 de enero de 2012 a las 17:02


  • Una cuestión de estilo y gusto: me gusta dejar clara la agrupación de la cláusula booleana.

    – duffymo

    17 de enero de 2012 a las 17:06

  • Lo que sea, usé el teorema de DeMorgan y obtuve lo que necesitabas. No es necesario editar, siempre y cuando expreses la lógica correctamente.

    – duffymo

    17 de enero de 2012 a las 17:08

  • FYI los paréntesis exteriores son innecesarios. solo puedes hacer name = city.getName()==null ? "N/A" : city.getName()

    –Steve Kuo

    17/01/2012 a las 19:50

  • No String cityName = city.getName(); tira un NullPointerException si city == null? Por lo tanto, diría que su solución intermedia es definitivamente la mejor (¡PD y apruebo los paréntesis ‘innecesarios’! Las personas deben recordar que el 99% de la codificación se comunica con otras personas (y con su yo futuro), no con el compilador; de lo contrario usaríamos c!)

    – Alex

    25 de abril de 2013 a las 1:27


Para evitar llamar .getName() dos veces usaría

name = city.getName();
if (name == null) name = "N/A";

  • En un sistema multiusuario con una ciudad mutable, podría haber una intervención city.setName(null). Su respuesta maneja perfectamente eso.

    – Emory

    17 de enero de 2012 a las 18:14

La forma de hacerlo es con el operador ternario:

name = city.getName() == null ? city.getName() : "N/A"

Sin embargo, creo que tiene un error tipográfico en su código anterior, y quiere decir:

if (city.getName() != null) ...

Los ? : operador en Java

En Java puedes escribir:

if (a > b) {
  max = a;
}
else {
  max = b;
}

Establecer una sola variable en uno de dos estados en función de una sola condición es un uso tan común de if-else que se ha ideado un atajo para ello, el operador condicional, ?:. Usando el operador condicional, puede reescribir el ejemplo anterior en una sola línea como esta:

max = (a > b) ? a : b;

(a > b) ? un : b; es una expresión que devuelve uno de dos valores, a o b. La condición, (a > b), se prueba. Si es verdadero, se devuelve el primer valor, a. Si es falso, se devuelve el segundo valor, b. Cualquier valor que se devuelva depende de la prueba condicional, a > b. La condición puede ser cualquier expresión que devuelva un valor booleano.

Siempre se me olvida cómo usar el ?: operador ternario. Esta respuesta complementaria es un recordatorio rápido. es una abreviatura de if-then-else.

myVariable = (testCondition) ? someValue : anotherValue;

dónde

  • () sostiene el if
  • ? medio then
  • : medio else

es lo mismo que

if (testCondition) {
    myVariable = someValue;
} else {
    myVariable = anotherValue;
}

avatar de usuario
digitebs

en Java 8:

name = Optional.ofNullable(city.getName()).orElse("N/A")

1. Puedes eliminar soportes y saltos de línea.

if (city.getName() != null) name = city.getName(); else name = "N/A";

2. Puedes usar ?: operadores en java.

Sintaxis:

Variable = Condition ? BlockTrue : BlockElse;

Así que en tu código puedes hacer esto:

name = city.getName() == null ? "N/A" : city.getName();

3. Asignar resultado de condición para booleano

boolean hasName = city.getName() != null;

EXTRA: para curiosos

En algunos idiomas basados ​​en JAVA me gusta Groovypuede usar esta sintaxis:

name = city.getName() ?: "N/A";

El operador ?: asignar el valor devuelto por la variable que estamos solicitando. En este caso, el valor de city.getName() si no es null.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad