Sobes.tech
Junior

Mi az a Lombok könyvtár?

sobes.tech MI

Válasz az MI-től

A Lombok egy Java-könyvtár, amely annotációk segítségével automatikusan generálja a sablonkódot (getterek, setterek, equals, hashCode, toString, konstruktorok stb.), csökkentve a kód szó szerinti hosszúságát és olvashatóságát.

Fő annotációk:

  • @Getter / @Setter: gettereket és settereket generál.
  • @ToString: létrehozza a toString metódust.
  • @EqualsAndHashCode: létrehozza az equals és hashCode metódusokat.
  • @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor: különböző típusú konstruktorokat generál.
  • @Data: ötvözi a @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode annotációkat.
  • @Builder: folyékony API-t biztosít az objektumok létrehozásához.

Használati példa:

// Lombok importok
import lombok.Data;
import lombok.Builder;

// Az @Data annotáció automatikusan generál gettereket, settereket,
// kötelező argumentumokat tartalmazó konstruktort, valamint toString, equals és hashCode metódusokat.
@Data
// A @Builder annotáció lehetővé teszi a Builder mintázat használatát az objektumok létrehozásához.
@Builder
public class User {

    private Long id;
    private String name;
    private int age;

    // Lombok automatikusan generálja:
    // getId(), setId(Long id)
    // getName(), setName(String name)
    // getAge(), setAge(int age)
    // konstruktor(Long id, String name, int age) - ha minden mező végleges, vagy @RequiredArgsConstructor végleges mezőkkel
    // toString()
    // equals()
    // hashCode()

    // Builder használat példája:
    // User user = User.builder()
    //                .id(1L)
    //                .name("Alice")
    //                .age(30)
    //                .build();
}

Előnyök:

  • A kód méretének csökkentése.
  • A kód olvashatóságának javítása.
  • A sablonkód írásakor elkövetett hibák valószínűségének csökkentése.

Hátrányok:

  • IDE-vel való integrációt igényel.
  • Megnehezítheti a hibakeresést, mivel a generált kód nem közvetlenül látható.