Sé que hay una manera de escribir una if
declaració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?
if
ló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á unNullPointerException
sicity == 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
:
medioelse
Es lo mismo que
fuente
Puede escribir
if, else if, else
declaraciones 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
JAVA
likeGroovy
, 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