[JAVA] Mémo de Lombok

Qu'est-ce que Lombok

--Une bibliothèque qui génère automatiquement du code fréquemment utilisé tel que getter / setter et constructeurs en Java

environnement

Rendre Lombok disponible

Paramètres dans IntelliJ

--Installez le plug-in lombok --Preference-> Plugins-> Rechercher lombok dans MarketPlace et installer

paramètres build.gradle

Ajoutez ce qui suit aux dépendances de build.gradle

build.gradle


compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

Vérifiez le code généré par lombok

java -jar <lombok.chemin du pot> delombok -p <Chemin de classe annoté>

Annotation

@Getter / @Setter

Concédant


import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class Human {
    private int age;
    private String name;
    private List<String> hobby;
}

Classe générée


import java.util.List;

public class Human {
    private int age;
    private String name;
    private List<String> hobby;

    @java.lang.SuppressWarnings("all")
    public int getAge() {
        return this.age;
    }

    @java.lang.SuppressWarnings("all")
    public String getName() {
        return this.name;
    }

    @java.lang.SuppressWarnings("all")
    public List<String> getHobby() {
        return this.hobby;
    }

    @java.lang.SuppressWarnings("all")
    public void setAge(final int age) {
        this.age = age;
    }

    @java.lang.SuppressWarnings("all")
    public void setName(final String name) {
        this.name = name;
    }

    @java.lang.SuppressWarnings("all")
    public void setHobby(final List<String> hobby) {
        this.hobby = hobby;
    }
}

@ToString

Concédant


import lombok.ToString;

import java.util.List;

@ToString
public class Human {
    private int age;
    private String name;
    private List<String> hobby;
}

Classe générée


import java.util.List;

public class Human {
    private int age;
    private String name;
    private List<String> hobby;

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    public java.lang.String toString() {
        return "Human(age=" + this.age + ", name=" + this.name + ", hobby=" + this.hobby + ")";
    }
}

@NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor

-- @ NoArgsConstructor: Génère automatiquement un constructeur sans arguments -- @ RequiredArgsConstructor: Génère automatiquement un constructeur qui prend un champ avec final comme argument -- @ AllArgsConstructor: Génère automatiquement un constructeur avec tous les champs comme arguments

Concédant(@AllArgsConstructor)


import lombok.AllArgsConstructor;

import java.util.List;

@AllArgsConstructor
public class Human {
    private int age;
    private final String name;
    private List<String> hobby;
}

Classe générée


import java.util.List;

public class Human {
    private int age;
    private final String name;
    private List<String> hobby;

    @java.lang.SuppressWarnings("all")
    public Human(final int age, final String name, final List<String> hobby) {
        this.age = age;
        this.name = name;
        this.hobby = hobby;
    }
}

@Data

@Value

--Version immuable de @ Data

@Builder

Concédant


import lombok.Builder;

import java.util.List;

@Builder
public class Human {
    private int age;
    private final String name;
    private List<String> hobby;
}

Côté à utiliser


import java.util.Arrays;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<String> hobby = Arrays.asList("Futsal", "régime", "en train de lire");
    Human human = new Human.HumanBuilder().age(20).name("Nom Taro").hobby(hobby).build();
    System.out.println(human);
  }
}

Classe générée


import java.util.List;

public class Human {
    private int age;
    private final String name;
    private List<String> hobby;

    @java.lang.SuppressWarnings("all")
    Human(final int age, final String name, final List<String> hobby) {
        this.age = age;
        this.name = name;
        this.hobby = hobby;
    }


    @java.lang.SuppressWarnings("all")
    public static class HumanBuilder {
        @java.lang.SuppressWarnings("all")
        private int age;
        @java.lang.SuppressWarnings("all")
        private String name;
        @java.lang.SuppressWarnings("all")
        private List<String> hobby;

        @java.lang.SuppressWarnings("all")
        HumanBuilder() {
        }

        @java.lang.SuppressWarnings("all")
        public HumanBuilder age(final int age) {
            this.age = age;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        public HumanBuilder name(final String name) {
            this.name = name;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        public HumanBuilder hobby(final List<String> hobby) {
            this.hobby = hobby;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        public Human build() {
            return new Human(age, name, hobby);
        }

        @java.lang.Override
        @java.lang.SuppressWarnings("all")
        public java.lang.String toString() {
            return "Human.HumanBuilder(age=" + this.age + ", name=" + this.name + ", hobby=" + this.hobby + ")";
        }
    }

    @java.lang.SuppressWarnings("all")
    public static HumanBuilder builder() {
        return new HumanBuilder();
    }
}

@NonNull

--Si vous le donnez à un champ de classe ou à un argument de méthode, il recherchera automatiquement null.

@EqualsAndHashCode

--ʻEquals () , la méthode hashCode () `est générée automatiquement

@Log

@Code généré lors de l'ajout de Slf4j


private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

var / val

--Le type peut être déduit automatiquement lorsqu'une variable est déclarée. Il semble qu'il ne sera pas utilisé car il a été implémenté en standard dans JDK10 ou version ultérieure

Recommended Posts

Mémo de Lombok
mémo docker
Lombok ① Introduction
Mémo Dockerfile
Mémo Itérateur
mémo corretto
Mémo Java
Mémo AWS
Mémo Dcokerfile
Essayez Lombok
Memo Stream
Mémo rétrospective du printemps
tutoriel docker (mémo)
Mémo API Stream
Mémo astuce Eclipse
java, mémo maven
Notes d'utilisation de JavaParser
Mémo addictif de SpringBoot-JPA-Hibernate
Remarque sur Java SE 7
Comment installer OpenJDK 11 Memo
Mémo de migration MySQL (1)
Notes d'utilisation de WatchService
Mémo d'utilisation PlantUML
java n'importe quoi mémo 2
Mémo de commande Docker-compose
Mémo de réglage e-Gov
Lombok ② Génération d'objets
Mémo d'erreur Maven3
Mémo de spécification Java
Notes d'utilisation de JUnit5
Mémo de modèle Java
Remarques à vérifier lorsque vous essayez d'utiliser Lombok