Loading ...

Google Guava: metodi di utilità con la classe Objects

Google Guava: metodi di utilità con la classe Objects

Google Guava è una libreria per Java con diverse utilità.

Oggi vediamo come usare la classe Objects!

Se usate Maven aggiungete questa dipendenza:

     <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>27.0-jre</version>
        </dependency>

Questa classe mette a disposizione diversi metodi di utilità applicabili a tutti gli oggetti.

Partiamo da una nostra classe:

import com.google.common.base.Objects;

public class Persona {

    private String nome;
    private String ruolo;

    public Persona(String nome, String ruolo) {
        this.nome = nome;
        this.ruolo = ruolo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getRuolo() {
        return ruolo;
    }

    public void setRuolo(String ruolo) {
        this.ruolo = ruolo;
    }

    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Persona) || object == null) {
            return false;
        }
        Persona p = (Persona) object;
        return Objects.equal(nome, p.nome) && Objects.equal(ruolo, p.ruolo);
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(nome, ruolo);
    }
}

Come vedete abbiamo anche ridefinito i metodi equals e hashCode.

A questo punto facendo qualche esperimento:

import com.google.common.base.MoreObjects;

public class Main {

    public static void main(String[] args) {
        Persona p1 = new Persona("Marco", "Magazziniere");
        Persona p2 = new Persona("Chiara", "Ballerina");
        System.out.println("UGUALI: " + p1.equals(p2));
        System.out.println("HASH:" + p1.hashCode());

        System.out.println(
                MoreObjects.toStringHelper(p1)
                        .add("NOME:", p1.getNome())
                        .add("RUOLO: ", p1.getRuolo())
                        .toString()
        );
    }

}

Il risultato sarà una cosa del genere:

UGUALI: false
HASH:737560729
Persona{NOME:=Marco, RUOLO: =Magazziniere}

Enjoy!