Duvida de como usar o ! equals()

12 respostas
W

estou fazendo uma exclusão no banco de dados, quando clico no botão excluir faço uma comparação de iqualdade e quero fazer outra no mesmo if... negando. Por exemplo: Se a matricula é igural ao usuario e o valor da variavel "valiadoPor" for diferente de null, não poderei excluir. Nesse meu exemplo a primeira clausula do if funciona o problema vem depois do &&. Fazendo da forma que esta no código abaixo está permitindo excluir, quando o "valiadoPor" é iqual a null. Podem me ajudar?

if (func.getMatricula().equals( agendaCirurgica.getUsuario())&& (!agendaCirurgica.getAvaliadoPor().equals(null))){
		    agendaCirurgicaDao.excluir(agendaCirurgica);
			FacesContext.getCurrentInstance().addMessage(null,
			new FacesMessage(FacesMessage.SEVERITY_INFO, "Excluido com sucesso!!", null));

		
	    }else{
		    FacesContext.getCurrentInstance().addMessage(null,
			    new FacesMessage(FacesMessage.SEVERITY_INFO, "Você não pode excluir esse registro!!", null));
		
	    }

12 Respostas

thiago.correa

Então você deve fazer assim

agendaCirurgica.getAvaliadoPor() != null

F

Se

alguma vez você utilizar obj.equals(null) em sua aplicação, você só terá dois tipos de resultados:

  • false, caso o seu objeto seja diferente de null
  • NullPointerException, casoo seu objeto seja igual a null.

Para comparar com o null apenas o == pode ser usado. Isto porque dizer que o objeto é null é dizer que na verdade não temos um objeto e sim uma referência que deveria apontar para um objeto determinado tipo mas que está apontando para null.
E o comparador == compara referências.

D

equals é para comparar de objetos!
eles são implementados em object e reescritos em cada classe para um comportamento adequado…

null seria um “tipo especial” para definir que uma posição de memória é nula…
portanto, compara-se usando operadores de comparação (==, !=, etc…)

W

não deu certo, já tinha tentado dessa forma usando != mas continua excluindo, onde não deveria

W

Alguém tem um idéia, como devo fazer?

pois dessa forma não deu certo

if (func.getMatricula().equals( agendaCirurgica.getUsuario())&& (agendaCirurgica.getAvaliadoPor() != null )){
		    agendaCirurgicaDao.excluir(agendaCirurgica);
			FacesContext.getCurrentInstance().addMessage(null,
			new FacesMessage(FacesMessage.SEVERITY_INFO, "Excluido com sucesso!!", null));

		
	    }else{
		    FacesContext.getCurrentInstance().addMessage(null,
			    new FacesMessage(FacesMessage.SEVERITY_INFO, "Você não pode excluir esse registro!!", null));
		
	    }
F
...
if  (func.getMatricula().equals( agendaCirurgica.getUsuario())&& (!agendaCirurgica.getAvaliadoPor().equals(null))){  
agendaCirurgicaDao.excluir(agendaCirurgica);  
...

Olhando para o seu código, o que está dentro do else{} deveria estar dentro do if{} e vice-versa.

Ficaria assim:

if (func.getMatricula().equals( agendaCirurgica.getUsuario())&& (!agendaCirurgica.getAvaliadoPor().equals(null))){  
  FacesContext.getCurrentInstance().addMessage(null,  
  new FacesMessage(FacesMessage.SEVERITY_INFO, "Você não pode excluir esse registro!!", null));  
}else{  
  agendaCirurgicaDao.excluir(agendaCirurgica);  
  FacesContext.getCurrentInstance().addMessage(null,  
  new FacesMessage(FacesMessage.SEVERITY_INFO, "Excluido com sucesso!!", null));  
}
W

como estou usando && as duas condições devem ser verdade, então como a ultima do avaliadoPor não esta funcioanando, caimos na clausula do else excluindo o registro

W

no momento do click no botão excluir, no console da aplicação estou pedindo para mostrar o valor das variaveis, e estão retornando com valores para não poder excluir no exemplo que enviei do codigo, mas mesmo assim estão excluindo. Não entendo

D

Poste o erro que esta dando agora!

A comparação sendo feita com == ou != é pra dar certo, pelo menos o erro nao deve estar neste ponto!

F

WebFaria
Você considerou o meu último post?
Nele eu dizia que o que você escreveu como comportamento desejado não era condizente com o código que você enviou.
Você chegou a alterar o bloco do if com o bloco do else? Se fizer esta alteração o código passa a atender o comportamento que você descreveu como sendo o correto.

Mande os valores que estão sendo passados como parâmetros e mostre o novo código que está utilizando (caso tenha alterado alguma coisa).

W

sim, considerei, mas não deu certo. O que quero é excluir o registro somente se a matricula for igual ao usuario e o avaliadoPo for diferente de null

esse é o codigo:

System.out.println("########################"+func.getMatricula()+"#######"+agendaCirurgica.getUsuario()+"##################=> "+agendaCirurgica.getAvaliadoPor());
	    
 
	    
	    if (func.getMatricula().equals( agendaCirurgica.getUsuario())&& (agendaCirurgica.getAvaliadoPor() != null )){
		    agendaCirurgicaDao.excluir(agendaCirurgica);
			FacesContext.getCurrentInstance().addMessage(null,
			new FacesMessage(FacesMessage.SEVERITY_INFO, "Excluido com sucesso!!", null));

		
	    }else{
		    FacesContext.getCurrentInstance().addMessage(null,
			    new FacesMessage(FacesMessage.SEVERITY_INFO, "Você não pode excluir esse registro!!", null));
		
	    }
W

Pessoal, obrigado pela ajuda, o problema foi resolvido. Questão de lógica, só troquei o != por ==. Erro de principiante. VAleu galera

Criado 7 de abril de 2010
Ultima resposta 7 de abr. de 2010
Respostas 12
Participantes 5