Oi pessoal
estava perdido no site do javaworld e vi este trecho “estranho” de código. Resolvi testar pra ver se funciona mesmo. Não parece que funciona pois pra mim deu erro.
Não postei meu código completo porque ficou muito tosco (poxa já é 00:00 e não tem como exigir muito) mas se quiserem eu posto aki. Então segue o trecho dos metodos e comentários do site.
[quote]
Take the latest version of Java, which tries to make null-pointer checking easier by offering shorthand syntax for the endless pointer testing. Just adding a question mark to each method invocation automatically includes a test for null pointers, replacing a rat’s nest of if-then statements, such as:
fonte : http://www.javaworld.com/javaworld/jw-12-2010/101206-programming-mistakes.html[/quote]
codigo normal
public String getPostcode(Person person) {
String ans= null;
if (person != null) { //testa se person é null
Name nm= person.getName(); // se não for atribui o retorno do objeto person.getName ao novo objeto nm criado dentro do método
if (nm!= null) { //totalmente redundante já que acabei criar nm mas enfim. testa se nm é null
ans= nm.getPostcode(); //se não for a string ans recebe o retorno de getPostcode da classe Name
}
}
return ans
}
e código melhorado (segundo o site)
public String getFirstName(Person person) {
return person?.getName()?.getGivenName();
//aqui teoricamente ele já testa se person é null, se getName retorna um objeto Name null e se tudo der certo este getGivenName deve retornar uma string
Alguém já viu estes sinais de interrogação usados para testar se a referência a objetos é null?
Detalhe: não considerem o nome dos métodos pois no site mesmo eles mudaram. A dúvida é se este tipo de utilização do operador “?” funciona ou não para este tipo de teste. se é que isto é Java :?:.