Sobes.tech
Junior

What is the Lombok library?

sobes.tech AI

Answer from AI

Lombok is a Java library that uses annotations to automatically generate boilerplate code (getters, setters, equals, hashCode, toString, constructors, etc.), reducing verbosity and making the code more readable.

Main annotations:

  • @Getter / @Setter: generate getters and setters.
  • @ToString: generates the toString method.
  • @EqualsAndHashCode: generates equals and hashCode methods.
  • @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor: generate different types of constructors.
  • @Data: combines @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode.
  • @Builder: provides a fluent API for object creation.

Example usage:

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

// @Data annotation generates getters, setters,
// a constructor with required arguments, as well as toString, equals, and hashCode methods.
@Data
// @Builder annotation allows using the Builder pattern for object creation.
@Builder
public class User {

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

    // Lombok will automatically generate:
    // getId(), setId(Long id)
    // getName(), setName(String name)
    // getAge(), setAge(int age)
    // constructor(Long id, String name, int age) - if all fields are final, or if @RequiredArgsConstructor is used with final fields
    // toString()
    // equals()
    // hashCode()

    // Example of using Builder:
    // User user = User.builder()
    //                .id(1L)
    //                .name("Alice")
    //                .age(30)
    //                .build();
}

Advantages:

  • Reduces code volume.
  • Improves code readability.
  • Decreases the likelihood of errors when writing boilerplate code.

Disadvantages:

  • Requires IDE integration.
  • May complicate debugging, as generated code is not directly visible.