Amigo, quando você compara objetos em java usando == o que você está comparando é o endereço de memória dos objetos, não seus conteúdos. Para comparar o conteúdo (ou estado) dos objetos, você precisa utilizar o método equals(), fornecido pelo classe “pai” de todas, o Object. Mas é só isso? Não!
Como a JVM vai saber, para um objeto que você mesmo criou, o que é igual e o que não é? Simples! Você reescreve o método equals na sua classe!
Para fazer isso, você deve seguir algumas regrinhas. Sejam 3 objetos da mesma classe, ‘a’, ‘b’ e ‘c’:
- Se a.equals(b), então b.equals(a) também deve ser verdadeiro.
- a.equals(a) deve retornar verdadeiro
- Se a.equals(b) e b.equals© então a.equals© tbm deve ser verdadeiro.
Você pode sobrescrever seu método equals mais ou menos assim, mas isso é específico para este objeto que você criou:
public boolean equals(Object obj){
if(obj instanceof SuaClasse)
return obj.getId == this.id;
else return false;
}
Agora, se seu ID foi definido como String e não como um tipo primitivo (como int), dai vc tem outro problema, porque fazer obj.getId() == this.id também irá comparar endereços de memória, visto que Strings são objetos! Então neste caso, dentro do equals, vc teria que comparar assim:
...
return obj.getId().equals(id);