Muitas vezes queremos comparar objetos em java mas não usando somente 1 atributo, como nome, cpf, placa … queremos que dois objetos sejam considerados iguais somente se ambos possuírem dois atributos semelhantes (nome e cpf, Placa e Renavam). Ou então, o caso da busca poder ser por vários tipos de parâmetros, buscar pelo nome ou pela idade. Em uma aplicação, é fundamental que o usuário possa escolher o parâmetro que deseja realizar a busca.

Com isso, para exemplificar melhor o problema proposto, seguiremos o mesmo exemplo do 1° artigo esclarecendo a sobrescrita do equals, o cadastro de pessoas com nome e cpf. Sendo assim, vamos direto ao assunto.

1° caso – Sobrescrevendo o equals para comparar objetos através de dois atributos – && (usando o e)

public class Pessoa {
  
  ...

  public boolean equals(Object obj) {
    if (obj instanceof Pessoa) {
      Pessoa qualquer = (Pessoa) obj;
      return this.cpf.equals(qualquer.getCpf()) && this.nome.equals(qualquer.getNome());
    }else {
      return false;
    }
    
  }
}

Nesse primeiro caso, o equals retorna true caso os dois atributos nome e cpf sejam iguais. Se o nome for igual mas o cpf não for, retorna false (vice e versa).

2° caso – Sobrescrevendo o equals para comparar objetos através de dois atributos – || (usando o ou)

public class Pessoa {
  
  ...

  public boolean equals(Object obj) {
    if (obj instanceof Pessoa) {
      Pessoa qualquer = (Pessoa) obj;
      return this.cpf.equals(qualquer.getCpf()) || this.nome.equals(qualquer.getNome());
    }else {
      return false;
    }
    
  }
}

Esse segundo caso se encaixa muito bem quando você quer dar ao usuário a opção de buscar um objeto por diferentes tipos de parâmetros, seja nome, seja cpf. Só basta que um dos atributos passados seja igual ao atributo de um objeto que o equals irá considerar e retornar true.

Categorias: Orientação a Objetos

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados

Orientação a Objetos

Sobrescrever o equals para comparar objetos por um atributo específico

O método equals em java é usado para fazer comparação entre dois objetos. Com isso, vamos supor o seguinte exercício: Crie um programa que cadastre pessoa com seu nome, idade e cpf. Depois de x Leia mais…