Estou atribuindo um valor a uma variável através de uma conta que recebe dois parametros, porém, pode haver de um dos parametros estarem nulos.
por exemplo:
No seu exemplo não tem como hora ou minuto virem nulos.
Eles são do tipo primitivo int, nunca são nulos.
lucasgarofolo
e se ao invés de serem int, forem EditText, que dentro desse método eu pego o conteúdo deles e já faço a conta ?
ai tem a possibilidade de virem nulos.
Existe algo qe eu possa fazer sem o uso de ifs elses ?
B
Bruno_Laturner
Em Java só usamos o termo nulo para objetos, no teu caso você mostrou dois parâmetros int, que são tipos primitivos, e não objetos.
De qualquer forma, não, não dá para ignorar. Ou você trata objetos nulos com ifs, ou você especifica que, caso você receba como parâmetro um objeto nulo, você irá lançar uma exceção.
Rodrigo_Sasaki
Tem que verificar com condicionais, pode até setar um valor padrão usando um ternário, caso isso faça sentido… mas tem que verificar.
A não ser que queira fazer um catch por NullPointerException, rs… O que não é algo muito legal.
linngallo
Se eu não me engano, existe um método, em JavaUtil, que se chama NullAs()… Vc passa o objeto, e o valor que ele assumiria, caso viesse nulo. Mas suponho que seja aplicado apenas para Wrappers, ou seja, objetos Integer, Long, Double… etc…
lucasgarofolo
Procurei NullAs() na documentation, não achei, não.
É uma wrapper o que estou usando e um método desse seria de grande utilidade, o exemplo foi só exemplo mesmo.
gabrielfrios
Esse JavaUtil é uma classe da linngallo. Não existe tal classe no Java.
daveiga
Nativo não conheço nada, mas pensando em como poderia resolver me ocorreu algo assim, nunca usei mas seria uma ideia:
Eu não sei se entendi direito, mas pelo que percebi vc está querendo ter a opção de passar, apenas a hora mas também quer ter a opção de passar mais parâmetros como os minutos sem fazer um tratamento mais complexo, se for o caso é possível fazer usando varargs da seguinte forma.
Nunca faça essa validação no método nullAsZero, pois há um 'bug' (se é que podemos chamar de bug) no operador ternário. Quando você compara um inteiro e um float, mesmo que o resultado seja um inteiro, ele retorna um float, pois ele eleva o valor para o Wrapper mais alto da comparação. Isso pode quebrar a aplicação.
O operador ternário, como o próprio nome diz, é um operador matemático. Portanto ele:
a) Deve retornar um valor;
b) O valor deve ser de um, e apenas um, tipo definido.
Operador ternário não é um if.
Você não pode usa-lo com duas funções void.
E, como retorna resultado, este pode ser usado ao se invocar um método.