Sé que hay una manera de escribir una ifdeclaración Java en forma corta.
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
¿Alguien sabe cómo escribir la forma corta de las 5 líneas anteriores en una sola línea?

iflógica al revés.if (city.getName()!=null){name = city.getName();}else{name="N/A"}if (city.getName()!= null) name = city.getName(); else name="N/A";Respuestas:
Use el operador ternario:
Creo que tiene las condiciones al revés: si es nulo, desea que el valor sea "N / A".
¿Qué pasa si la ciudad es nula? Su código * golpea la cama en ese caso. Añadiría otro cheque:
fuente
name = city.getName() == null ? "N/A" : city.getName();name = city.getName()==null ? "N/A" : city.getName()String cityName = city.getName();lanzará unNullPointerExceptionsicity == null? Por lo tanto, diría que su solución intermedia es definitivamente la mejor (¡PS y yo apruebo los paréntesis 'innecesarios'!) La gente necesita recordar que el 99% de la codificación se está comunicando con otras personas (y su futuro yo), no con el compilador; de lo contrario usaríamos c!)Para evitar llamar
.getName()dos veces, usaríafuente
city.setName(null). Su respuesta maneja perfectamente eso.La forma de hacerlo es con el operador ternario:
Sin embargo, creo que tiene un error tipográfico en su código anterior, y quiere decir:
fuente
En Java podrías escribir:
Establecer una sola variable en uno de los dos estados en función de una sola condición es un uso tan común de if-else que se ha diseñado un acceso directo para él, el operador condicional,?:. Usando el operador condicional puede reescribir el ejemplo anterior en una sola línea como esta:
(a> b)? a: b; es una expresión que devuelve uno de los 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. El valor devuelto depende de la prueba condicional, a> b. La condición puede ser cualquier expresión que devuelva un valor booleano.
fuente
en java 8:
fuente
Siempre estoy olvidando cómo usar el
?:operador ternario . Esta respuesta complementaria es un recordatorio rápido. Es la abreviatura deif-then-else.dónde
()sostiene elif?mediothen:medioelseEs lo mismo que
fuente
Puede escribir
if, else if, elsedeclaraciones en forma corta. Por ejemplo:Esta es una forma corta de:
fuente
Sintaxis:
Entonces, en su código, puede hacer así:
EXTRA: para curiosos
En algunos idiomas basados en
JAVAlikeGroovy, puede usar esta sintaxis:El operador
?:asigna el valor devuelto por la variable que estamos solicitando. En este caso, el valor decity.getName()si no lo esnull.fuente
fuente
en primer lugar
(city.getName() == null)se verifica la condición . En caso afirmativo, se"N/A"le asigna el nombre o simplementename="N/A"o de lo contrario el valor decity.getName()se asigna al nombre, es decirname=city.getName().Cosas para mirar aquí:
(city.getName() == null)?. Aquí el signo de interrogación está justo después de la condición. ¡Fácil de ver / leer / adivinar incluso!:) y el valor a la derecha de los dos puntos (a) el valor a la izquierda de los dos puntos se asigna cuando la condición es verdadera; de lo contrario, el valor a la derecha de los dos puntos se asigna a la variable.Aquí hay una referencia: http://www.cafeaulait.org/course/week2/43.html
fuente
aquí hay un código de línea
Aquí hay un ejemplo de cómo funciona, ejecute el siguiente código en el archivo js y comprenda el resultado. Esta
("Data" != null)es una condición como lo hacemos en la normalidadif()y"Data"es una declaración cuando esta condición se hizo realidad. esto" : "actúa como otra cosa y"N/A"es una declaración para la condición de otra cosa. Espero que esto te ayude a entender la lógica.fuente
Use org.apache.commons.lang3.StringUtils:
fuente
Simple y claro:
Versión larga:
o cómo lo estoy usando para que quede claro para otros lectores de código:
fuente
Puede usar el operador ternario en java.
Sintaxis:
Entonces en tu código puedes hacer así,
Para obtener más información, puede consultar este recurso.
fuente
fuente