Vários ifs encadeados

2 respostas
R

Ola boa tarde a todos, estou querendo um conselho tenho um código que faz comparação de vários campos de um objeto se for nulo ele pega os dados de outro objeto se não ele mantem o valor digitado pelo usuário o código é o seguinte

public void setAdicionarAreasEnvolvidas(){
		if(portfolio.getDescricao() == null){
			portfolio.setDescricao(portfolioEvolucao.getDescricao());
		}
		if(portfolio.getAbrangencia() == null){
			portfolio.setAbrangencia(portfolioEvolucao.getAbrangencia());
		}
		if(portfolio.getEstrategico() == null){
			portfolio.setEstrategico(portfolioEvolucao.getEstrategico());
		}
	}

A minha solução é essa, mas está muito feia queria ver se alguém tem um jeito melhor para se fazer está comparação.

2 Respostas

V

Por que eles retornam null?

Em campos de texto, ao invés de gravar nulo, grave uma String vazia: ""

Isso vai tornar o if desnecessário.

Campos numéricos também podem usar o valor "0", que representa o vazio.

Você só vai testar contra null se realmente precisar de um valor default.

PS: Sempre é possível criar alguns métodos auxiliares também:

public String noNulls(String field) {
   if (field == null) return "";
   return field;
}

public int noNulls(Integer field) {
   if (field == null) return 0;
   return field;
}
E usa-lo assim:
portfolio.setDescricao(noNulls(portfolioEvolucao.getDescricao()));  
 portfolio.setAbrangencia(noNulls(portfolioEvolucao.getAbrangencia()));  
 portfolio.setEstrategico(noNulls(portfolioEvolucao.getEstrategico()));
R

Vlwww mesmo pela resposta acho que isso vai resolver o meu problema. Vou verificar aqui não tinha pensado nessa hipótese.
Eles retornam null porque o valor aparece assim quando o usuário não preenche o campo.
Agradecido.

Criado 10 de outubro de 2014
Ultima resposta 13 de out. de 2014
Respostas 2
Participantes 2