Programação avançada – capitulo 7

A classe Object:
esta é a classe das quais todas as outras classes derivam
tem métodos importantes:
public String toString()
que retorna uma string que descreve um objeto

public boolean equals(Objecto obj)
tem com objectivo fazer a comparação entre dois objectos, em termos de conteudos, sabendo que usando o == compara referências
e é necessário que ele esteja definido

package e23;

class Animal{
    private int peso;
    private String nome;

    Animal(int p, String s){
        this.peso = p;
        this.nome = s;
    }
    
    public boolean equals(Object ob){
        if(this == ob){
            return true;
        }
        if((ob == null) || (ob.getClass() != this.getClass())){
            return false;
        }
        
        // type casting of the argument
        Animal anim = (Animal)ob;
    
        return (this.peso == anim.peso && this.nome == anim.nome);
    }

}

public class e23 {

    public static void main(String args[]) {
        Animal a1 = new Animal(80, "pedro");
        Animal a2 = new Animal(55, "maria");
        Animal a3 = new Animal(80, "pedro");
        
        if(a1.equals(a3)){
            System.out.println("O método equals");
        }else{
            System.out.println("Não são iguais");
        }
    }
}

public int hashCode()
quando se define o método equals também se deve definir o método hashCode()
este método retorna um inteiro, que resulta da conversão do endereço interno do objecto

package e23;

import java.util.Objects;

class Animal {

    private int peso;
    private String nome;

    Animal(int p, String s) {
        this.peso = p;
        this.nome = s;
    }

    public boolean equals(Object ob) {
        if (this == ob) {
            return true;
        }
        if ((ob == null) || (ob.getClass() != this.getClass())) {
            return false;
        }

        // type casting of the argument
        Animal anim = (Animal) ob;

        return (this.peso == anim.peso && this.nome == anim.nome);
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 17 * hash + this.peso;
        hash = 17 * hash + Objects.hashCode(this.nome);
        return hash;
    }
}

public class e23 {

    public static void main(String args[]) {
        Animal a1 = new Animal(80, "pedro");
        Animal a2 = new Animal(55, "maria");
        Animal a3 = new Animal(80, "pedro");

        if (a1.equals(a3)) {
            System.out.println("O método equals");
        } else {
            System.out.println("Não são iguais");
        }
    }
}

Este método como outros podem ser inseridos de forma automática no netbeans, se dentro da classe e com o lado direito do reato se optar por inserir código (ALT+INSERT)

+infos(geeksforgeeks.org): LINK gostei da explicação

Tags : , , ,