dúvida com equals() sobrescrito

pq não funciona?

[code] @Override
public boolean equals(Object andre) {
if (andre instanceof TipoArquivoAction) {
return true;
}
else{
return false;
}
}
public static void main(String[] args) {

	TipoArquivoAction d1 = new TipoArquivoAction();
	TipoArquivoAction d2 = new TipoArquivoAction();
	
	System.out.println(d1.equals(d2));
}[/code]

às vezes tenho a impressão de não estar usando o equals() sobrescrito…

Esse método equals está na classe TipoArquivoAction ?

Esse seu metodo equals nao parece fazer muito sentido…

O que vc espera que seu metodo retorne? Ele vai retornar True, pois vc esta testando se o objeto passado eh uma instancia de uma determinada classe. Nesse caso sempre dois objetos do tipo TipoArquivoAction vao ser considerados iguais.

Olá,

O override do método public boolean equals(Object obj) deve ser feito acordo com um contrato definido na especificação,
caso contrário você pode ter alguns resultados “imprevisíveis”, por exemplo, ao se utilizar Collections.

Verifique: http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#equals%28java.lang.Object%29

Por exemplo, segundo o seu override do equals, uma Collection do tipo Set iria tratar todas as intâncias de TipoArquivoAction
como sendo iguais!

[ ]'s

Etapas importantes para verificar se dois objetos são iguais:

  1. Verifique se o objeto passado como argumento é diferente de null
  2. Verifique se o objeto é uma instância da mesma classe
  3. Compare os atributos importantes do objeto
  4. Não esqueça de implementar também o hashCode

Exemplos:

  1. Classe Pessoa
public class Pessoa {

    private String cpf;
    private String nome;
    private int idade;
    // o resto dos atributos pertinentes ao sistema

    // construtor, getters  e setters omitidos

    public boolean equals(Object o) {
        if (o == null || !(o instanceof Pessoa)) {
            return false;
        }
        return cpf.equals(o.cpf); // compara apenas usando o CPF
    }

    // não esqueça de implementar o hashCode

}
  1. Classe Livro
public class Livro {

    private String isbn;
    private String titulo;
    private String codigo;
    private String autor;
    // o resto dos atributos pertinentes ao sistema

    // construtor, getters  e setters omitidos

    public boolean equals(Object o) {
        if (o == null || !(o instanceof Livro)) {
            return false;
        }
        return isbn.equals(o.isbn) && codigo.equals(o.codigo); // compara pelo ISBN e pelo código (já que podem haver vários exemplares do mesmo livro numa biblioteca, por exemplo)
    }

    // não esqueça de implementar o hashCode

}