Fórum Sobreescrita de equals #401316

19/05/2011

0

Sempre que vejo uma classe POJO, vejo a sobreescrita do método equals. Isso é obrigatório? Esse é de um exemplo que estou estudando.
@Entity
@Table(name="matricula")
@SequenceGenerator(name="seq_matricula", sequenceName="matricula_idmatricula_seq", allocationSize=1)
public class Matricula implements Serializable{
    
    private static final long serialVersionUID = 0L;
    
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_matricula")    
    @Column(name="idmatricula")    
    private Integer idmatricula;
    @Column(name="idpessoa")    
    private Integer idpessoa;
    @Column(name="idescola")    
    private Integer idescola;
    @Temporal(TemporalType.DATE)
    private Calendar dtmatricula;
    @Column(name="situacao")
    private String situacao;    
    
    public Matricula(){    
    }
    
    public Matricula(Integer idmatricula,Integer idpessoa, Integer idescola,java.util.Calendar dtmatricula,String situacao){
        this.idmatricula = idmatricula;
        this.idpessoa    = idpessoa;
        this.idescola    = idescola;
        this.dtmatricula = dtmatricula;
        this.situacao    = situacao;        
    }
    
    public long getIdmatricula() {
        return idmatricula;
    }
    public void setIdmatricula(Integer idmatricula) {
        this.idmatricula = idmatricula;
    }
    public long getIdprofessor() {
        return idpessoa;
    }
    public void setIdprofessor(Integer idpessoa) {
        this.idpessoa = idpessoa;
    }
    public long getIdescola() {
        return idescola;
    }
    public void setIdescola(Integer idescola) {
        this.idescola = idescola;
    }
    public java.util.Calendar getDtmatricula() {
        return dtmatricula;
    }
    public void setDtmatricula(java.util.Calendar dtmatricula) {
        this.dtmatricula = dtmatricula;
    }
    public String getSituacao() {
        return situacao;
    }
    public void setSituacao(String situacao) {
        this.situacao = situacao;
    }
    public static long getSerialversionuid() {
        return serialVersionUID;
    }
    
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Matricula other = (Matricula) obj;
        if (idmatricula == null) {
            if (other.idmatricula != null)
                return false;
        } else if (!idmatricula.equals(other.idmatricula))
            return false;
        return true;
    }
}

Pjava

Pjava

Responder

Posts

19/05/2011

Anthony Accioly

PJava,
O método equals é o método no qual você define a regra de negócios para dizer se dois objetos são iguais. Se você não faz a sobreescrita de equals, duas matrículas com o mesmo ID não são consideradas iguais. 
Por exemplo (comente o método equals do seu código e teste você mesmo):
     Matricula m1 = new Matricula();     m1.setIdmatricula(10);    Matricula m2 = new Matricula();
    m2.setIdmatricula(10);    System.out.println(m1.equals(m2)); // false


Eis um tópico recente do meu Blog falando sobre o assunto: 
    http://a.accioly.7rtc.com/2011/05/java-vs-equals.html
Moderadores, desculpe a propaganda direcionada aqui hehehe.
Responder

Gostei + 0

19/05/2011

Davi Costa

As ide´s geram esse código automático facilitando muito a nossa vida. Inclusive vc pode fazer algumas sobrescrições não só pelo id, mas com o id e outros atributos também. Algumas vezes isso faz bem sentido e ajudo muito.

Att Davi
Responder

Gostei + 0

19/05/2011

Anthony Accioly


As ide´s geram esse código automático facilitando muito a nossa vida. Inclusive vc pode fazer algumas sobrescrições não só pelo id, mas com o id e outros atributos também. Algumas vezes isso faz bem sentido e ajudo muito.

Att Davi

 
 

Aproveitando o gancho, no artigo do meu blog mencionado acima, tem um resuminho de como gerar o método equals no Eclipse, Netbeans e IntelliJ.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar