Sobes.tech
Junior

Τι είναι η βιβλιοθήκη Lombok;

sobes.tech AI

Απάντηση από AI

Το Lombok είναι μια βιβλιοθήκη Java που, μέσω annotations, επιτρέπει τη αυτόματη δημιουργία κώδικα προτύπου (getters, setters, equals, hashCode, toString, constructors κ.ά.), μειώνοντας την πολυλογία του κώδικα και καθιστώντας τον πιο ευανάγνωστο.

Βασικά annotations:

  • @Getter / @Setter: δημιουργούν getters και setters.
  • @ToString: δημιουργεί τη μέθοδο toString.
  • @EqualsAndHashCode: δημιουργούν τις μεθόδους equals και hashCode.
  • @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor: δημιουργούν διαφορετικούς τύπους constructors.
  • @Data: συνδυάζει @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode.
  • @Builder: παρέχει ένα ροή API για τη δημιουργία αντικειμένων.

Παράδειγμα χρήσης:

// Εισαγωγές Lombok
import lombok.Data;
import lombok.Builder;

// Το annotation @Data δημιουργεί getters, setters,
// constructor με υποχρεωτικά επιχειρήματα, καθώς και μεθόδους toString, equals και hashCode.
@Data
// Το annotation @Builder επιτρέπει τη χρήση του pattern Builder για τη δημιουργία αντικειμένων.
@Builder
public class User {

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

    // Ο Lombok θα δημιουργήσει αυτόματα:
    // getId(), setId(Long id)
    // getName(), setName(String name)
    // getAge(), setAge(int age)
    // constructor(Long id, String name, int age) - αν όλα τα πεδία είναι τελικά, ή αν χρησιμοποιείται @RequiredArgsConstructor με τελικά πεδία
    // toString()
    // equals()
    // hashCode()

    // Παράδειγμα χρήσης του Builder:
    // User user = User.builder()
    //                .id(1L)
    //                .name("Alice")
    //                .age(30)
    //                .build();
}

Πλεονεκτήματα:

  • Μείωση του όγκου κώδικα.
  • Βελτίωση της αναγνωσιμότητας του κώδικα.
  • Μείωση της πιθανότητας σφαλμάτων κατά τη συγγραφή κώδικα προτύπου.

Μειονεκτήματα:

  • Απαιτεί ενσωμάτωση με IDE.
  • Μπορεί να δυσκολέψει την αποσφαλμάτωση, καθώς ο παραγόμενος κώδικας δεν είναι άμεσα ορατός.