Pessoal
como se chama essa tecnica…
String teste = null;
String a = teste == null ? "-" : "";
e pra que ela exatamente serve…
Pessoal
como se chama essa tecnica…
String teste = null;
String a = teste == null ? "-" : "";
e pra que ela exatamente serve…
O operador ternário é uma espécie de if, que retorna um valor.
Escrever:
String a;
if (teste == null)
a = "-";
else
a = "";
É equivalente ao seu código. Mas o teste para null é muito usado quando queremos obter um valor de um objeto, ou retornar null, caso nem sequer esse objeto exista. Por exemplo:
public int getPontosMelhorCliente() {
Cliente c = obterMelhorCliente(); //Pode retornar null, caso não haja um.
return c == null ? null : c.getPontos();
}
Note que se c fosse nulo, chamar c.getPontos() resultaria numa NullPointerException. Algumas linguagens já estão simplificando essa construção. O groovy, por exemplo, incluiu o “safe navigation operator”, justamente com esse fim:
return c?.getPontos();
E é previsto que no Java 7 vai ter o “safe null navigator”.
Interessante, e o que aconteceria no lugar do NullPointerException?
Interessante, e o que aconteceria no lugar do NullPointerException?
No caso de métodos void, creio que nada. No caso de métodos com retorno deve retornar null (isso tudo é um palpite, é claro). Algo como:
PreparedStatement = null;
// instancia o dito cujo e trabalha com ele
finally {
ps?.close();
}
Seria o equivalente a:
PreparedStatement = null;
// instancia o dito cujo e trabalha com ele
finally {
if (ps != null) {
ps.close();
}
}
E o código:
Object a = instaciacaoDoObjetoQuePodeRetornarNull();
String s = a?.toString();
Seria equivalente a:
Object a = instaciacaoDoObjetoQuePodeRetornarNull();
String s;
if (a == null) {
s = null;
} else {
s = a.toString();
}
Mas o NullPointerException deve continuar ocorrendo se fizermos da maneira que fazemos atualmente (sem usar o safe null navigator).
Muito Obrigado pessoal,
muito bem respondida minha pergunta…
Abraços
Agora testando código me veio uma duvida, tudo ou quase tudo que faço com “if” consigo fazer com operador ternário, quando usar um ou outro…?
Use if/else com if’s aninhados, com condições complexas ou qualquer outra situação em que usar um if ternário deixará seu código sujo e ruim de ler. Para condições simples, pode-se perfeitamente usar um if ternário.