Quase isso, a diferença é só que ele também verifica se o segundo é nulo, e se for, lança uma NullPointerException. A vantagem está em já ter um monte de coisas simples empacotadas, assim não precisamos escrever classes como a famosa StringUtils.
Quase isso, a diferença é só que ele também verifica se o segundo é nulo, e se for, lança uma NullPointerException. A vantagem está em já ter um monte de coisas simples empacotadas, assim não precisamos escrever classes como a famosa StringUtils.
Mas agora você me deve uma coxinha! :mrgreen:
Flw! :thumbup: [/quote]
Oi,
A desvantagem é ter que usar mais um “pacote” de bibliotecas acopladas ao seu JAR ou ao seu Java.
A desvantagem é ter que usar mais um “pacote” de bibliotecas acopladas ao seu JAR ou ao seu Java.
Pode pagando meu guaraná :twisted:
Tchauzin![/quote]
Não vejo como desvantagem, prefiro isso ao invés de adicionar StringUtils em todos os projetos. Sem contar um monte de outras classes utilitárias!
E o código do método é esse:
[code]public static T firstNonNull(@Nullable T first, @Nullable T second) {
return first != null ? first : checkNotNull(second);
}
// esse método é da classe Preconditions
public static T checkNotNull(T reference) {
if (reference == null) {
throw new NullPointerException();
}
return reference;
}[/code]Então dá sim NullPointer! A lina me deve a coxinha! :mrgreen:
Dá NullPointer usando esta API, eu me referia ao if ternario.
Só não acho interessante adicionar uma API para usar um único método, não para esse caso.
Mas ai é questão de parar e analisar. Apenas que o if ternario resolve isso de maneira simples, é sem dúvida.
[quote=nel]Dá NullPointer usando esta API, eu me referia ao if ternario.
Só não acho interessante adicionar uma API para usar um único método, não para esse caso.
Mas ai é questão de parar e analisar. Apenas que o if ternario resolve isso de maneira simples, é sem dúvida.[/quote] @nel
O caso é que null não deve ser utilizado. Nunca passe nem devolva null, isso é adicionar trabalho desnecessário a sua aplicação. Mas de qualquer forma, principalmente quando você trabalha com apis mais antigas, você tem que lidar com o null, e aí é que fica interessante você ter uma api só para fazer essas coisas simples, sem que você tenha que copiar suas classes *Utils para todos os projetos. Essa é a idéia do guava, um compilado de classes *Utils que sempre criamos em qualquer projeto. Depois de adotar o guava, nunca mais fiz verificações variavel == null.
[quote=nel]Dá NullPointer usando esta API, eu me referia ao if ternario.
Só não acho interessante adicionar uma API para usar um único método, não para esse caso.
Mas ai é questão de parar e analisar. Apenas que o if ternario resolve isso de maneira simples, é sem dúvida.[/quote]
[quote=von.juliano][quote=nel]Dá NullPointer usando esta API, eu me referia ao if ternario.
Só não acho interessante adicionar uma API para usar um único método, não para esse caso.
Mas ai é questão de parar e analisar. Apenas que o if ternario resolve isso de maneira simples, é sem dúvida.[/quote] @nel
O caso é que null não deve ser utilizado. Nunca passe nem devolva null, isso é adicionar trabalho desnecessário a sua aplicação. Mas de qualquer forma, principalmente quando você trabalha com apis mais antigas, você tem que lidar com o null, e aí é que fica interessante você ter uma api só para fazer essas coisas simples, sem que você tenha que copiar suas classes *Utils para todos os projetos. Essa é a idéia do guava, um compilado de classes *Utils que sempre criamos em qualquer projeto. Depois de adotar o guava, nunca mais fiz verificações variavel == null.
Flw! :thumbup: [/quote]
Oi,
Não existe problemas em fazer variavel == null e sim variavel != null
A proposta era implementar na forma do Elvis Operator do Groovy
return nome ?: "Indefinido";
Tem muita panaquice “anti-syntax suggar” no comitê no Java.
Até hoje não sei como uma sintaxe tão rebuscada quanto a dos generics foi aprovada.
O fato é que a linguagem poderia ser bem mais confortável de se programar. Mas não é.
Não existe sobrecarga de operadores, atributos e detalhes como esse para facilitar a vida, simplificar o código e deixá-lo mais legível.
Felizmente a pressão de outras linguagens (como o C#), está fazendo o pessoal do comitê e da Oracle flexibilizar um pouco mais.