Dúvida sobre comparação de objetos

4 respostas
vinihds

Boa tarde…to com uma dúvida sobre comparação de objetos

Eu tenho duas classes e utilizo o método .equals() mas a comparação não funciona. Eu tenho que reescrever esse método ?

Por exemplo:

class ClasseA{
	int a;
	ClasseA(){
		this.a = 1;
	}
	ClasseA(int a){
		this.a = a;
	}	
//sei lah
}

class ClasseB{
//sei lah	
}

public class TesteComparacao {

	public static void main(String[] args) {
             ClasseA classeA1 = new ClasseA();
             ClasseA classeA2 = new ClasseA();
             if (classeA1.equals(classeA2)){
              //entra
             }
            ClasseB classeB1 = new ClasseB();
             ClasseB classeB2 = new ClasseB();
             if (classeB1.equals(classeB2)){
              //entra
             }

        }
}

para funcionar a comparação da ClasseA, ela teria q ficar assim: ?

class ClasseA{
	int a;
	ClasseA(){
		this.a = 1;
	}
	ClasseA(int a){
		this.a = a;
	}
	@Override
	public boolean equals(Object obj) {
		if (this.a == ((ClasseA) obj).a){
			return true;
		}else{
			return false;
		}
	}
}

valeu!!!

4 Respostas

evertonsilvagomesjav

Sim teria.

tinorberto

equals compara a referencia, não os valores. Para valores deve sobrescrever o emtodo equals. flw

vinihds

valeu !!!

MarcioCasteloBranco

vinihds vc tera que sobrescrever os metodos equals e hashCode e vc não pode esquecer que os objetos comparados possuem relações de equivalencia
-reflexiva
-simetrica
-transitiva
-consistente

fora o contrato , da uma olhada neste post que ele esta bem explicado.

http://www.guj.com.br/posts/list/121939.java

Vlw

Criado 9 de outubro de 2010
Ultima resposta 9 de out. de 2010
Respostas 4
Participantes 4