lombok

Mattepuffo's logo
Scrivere codice migliore in Java con Project Lombok

Scrivere codice migliore in Java con Project Lombok

Supponiamo di avere questo codice in Java (che sappiamo tutti essere un linguaggio abbastanza prolisso):

import java.util.Objects;

public class Persona {

    private int id;
    private String username;
    private int eta;

    public Persona(int id, String username, int eta) {
        this.id = id;
        this.username = username;
        this.eta = eta;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getEta() {
        return eta;
    }

    public void setEta(int eta) {
        this.eta = eta;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Persona persona = (Persona) o;
        return id == persona.id &&
                eta == persona.eta &&
                Objects.equals(username, persona.username);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, username, eta);
    }

    @Override
    public String toString() {
        return "Persona{" +
                "id=" + id +
                ", username='" + username + ''' +
                ", eta=" + eta +
                '}';
    }

    public static class PersonBuilder {
        private int id;
        private String username;
        private int eta;

        public PersonBuilder setId(int id) {
            this.id = id;
            return this;
        }

        public PersonBuilder setUsername(String username) {
            this.username = username;
            return this;
        }

        public PersonBuilder setEta(int eta) {
            this.eta = eta;
            return this;
        }

        public Persona build() {
            return new Persona(id, username, eta);
        }
    }
}