Eu sei que há uma maneira de escrever uma if
instrução Java em forma abreviada.
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
Alguém sabe como escrever o formulário curto para as 5 linhas acima em uma linha?
Eu sei que há uma maneira de escrever uma if
instrução Java em forma abreviada.
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
Alguém sabe como escrever o formulário curto para as 5 linhas acima em uma linha?
if
lógica de maneira errada.if (city.getName()!=null){name = city.getName();}else{name="N/A"}
if (city.getName()!= null) name = city.getName(); else name="N/A";
Respostas:
Use o operador ternário:
Eu acho que você tem as condições ao contrário - se for nulo, você deseja que o valor seja "N / A".
E se a cidade for nula? Seu código * atinge a cama nesse caso. Eu adicionaria outra verificação:
fonte
name = city.getName() == null ? "N/A" : city.getName();
name = city.getName()==null ? "N/A" : city.getName()
String cityName = city.getName();
jogar umNullPointerException
secity == null
? Portanto, eu diria que sua solução intermediária é definitivamente a melhor (PS e eu aprovo os parênteses 'desnecessários'!) As pessoas precisam lembrar que 99% da codificação está se comunicando com outras pessoas (e com o seu futuro), não com o compilador - caso contrário usaríamos c)!Para evitar ligar
.getName()
duas vezes, eu usariafonte
city.setName(null)
. Sua resposta lida perfeitamente com isso.A maneira de fazer isso é com o operador ternário:
No entanto, acredito que você tenha digitado um erro de digitação no código acima e queira dizer:
fonte
Em Java, você pode escrever:
Definir uma variável única para um dos dois estados com base em uma única condição é um uso tão comum de if-else que um atalho foi criado para ela, o operador condicional,?:. Usando o operador condicional, você pode reescrever o exemplo acima em uma única linha como esta:
(a> b)? a: b; é uma expressão que retorna um dos dois valores, a ou b. A condição (a> b) é testada. Se for verdade, o primeiro valor, a, é retornado. Se for falso, o segundo valor, b, será retornado. Qualquer valor retornado depende do teste condicional, a> b. A condição pode ser qualquer expressão que retorne um valor booleano.
fonte
em java 8:
fonte
Estou sempre esquecendo como usar o
?:
operador ternário . Esta resposta suplementar é um lembrete rápido. É uma abreviação deif-then-else
.Onde
()
segura oif
?
significathen
:
significaelse
É o mesmo que
fonte
Você pode escrever
if, else if, else
instruções em formato curto. Por exemplo:Esta é uma forma curta de:
fonte
Sintaxe:
Portanto, no seu código, você pode fazer assim:
EXTRA: para curiosos
Em alguns idiomas baseados em
JAVA
likeGroovy
, você pode usar esta sintaxe:O operador
?:
atribui o valor retornado da variável que estamos solicitando. Nesse caso, o valor decity.getName()
se não fornull
.fonte
fonte
em primeiro lugar a condição
(city.getName() == null)
é verificada. Se sim, então"N/A"
é atribuído ao nome ou simplesmentename="N/A"
ou o valor decity.getName()
é atribuído ao nome, ou seja,name=city.getName()
.Coisas para olhar aqui:
(city.getName() == null)?
. Aqui o ponto de interrogação está logo após a condição. Fácil de ver / ler / adivinhar mesmo!:
) e à direita de dois pontos (a) o valor à esquerda de dois pontos é atribuído quando a condição for verdadeira, caso contrário, o valor à direita de dois pontos é atribuído à variável.aqui está uma referência: http://www.cafeaulait.org/course/week2/43.html
fonte
aqui está um código de linha
Aqui está um exemplo de como funciona, execute o código abaixo no arquivo js e entenda o resultado. Esta
("Data" != null)
é uma condição como fazemos no normalif()
e"Data"
é uma declaração quando essa condição se tornou verdadeira. isso" : "
age como outra coisa e"N/A"
é uma declaração para outra condição. Espero que isso ajude você a entender a lógica.fonte
Use org.apache.commons.lang3.StringUtils:
fonte
Simples e claro:
versão longa:
ou como eu estou usando isso para ficar claro para outros leitores de código:
fonte
Você pode usar o operador ternário em java.
Sintaxe:
Então, no seu código, você pode fazer assim,
Para mais informações, você pode consultar este recurso.
fonte
fonte