Sobes.tech
Junior

Lombok kitabxanası nədir və Java inkişafında necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Lombok — bu Java kitabxanasıdır və şablon kodunun (boilerplate code) miqdarını azaltmağa kömək edir. Bu, annotasiyalar əsasında metodları, məsələn, konstruktörlər, getterlər, setterlər, equals(), hashCode()toString() metodlarını avtomatik olaraq tərtib zamanı yaradır.

Əsas annotasiyalar və onların istifadəsi:

  • @Getter / @Setter: Sinif sahələri üçün getX() və setX() metodlarını yaradır.
  • @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor: Argümentsiz konstruktörlər, @NonNull və ya final kimi işarələnmiş bütün sahələr üçün konstruktorlar və bütün sahələr üçün konstruktorlar yaradır.
  • @Data: @ToString, @EqualsAndHashCode, @Getter, @Setter@RequiredArgsConstructor-u birləşdirir. Model sinifləri üçün uyğundur.
  • @Value: @Data-ya bənzəyir, lakin sinifi dəyişməz edir (final). Bütün sahələr default olaraq private final olur.
  • @Builder: "Tərtibçi" nümunəsi üçün kod yaradır, bu da çox sayda sahəsi olan obyektlərin yaradılmasını sadələşdirir.
  • @Slf4j (və digər loggerlər üçün): Sinifdə statik logqer sahəsi (log) yaradır.

@Data istifadəsinə nümunə:

// Lombok olmadan istifadəçi modeli
public class UserManual {
    private String username;
    private String email;

    public UserManual(String username, String email) {
        this.username = username;
        this.email = email;
    }

    public String getUsername() {
        return username;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "UserManual{" +
               "username='" + username + '\'' +
               ", email='" + email + '\'' +
               '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UserManual that = (UserManual) o;
        if (username != null ? !username.equals(that.username) : that.username != null) return false;
        return email != null ? email.equals(that.email) : that.email == null;
    }

    @Override
    public int hashCode() {
        int result = username != null ? username.hashCode() : 0;
        result = 31 * result + (email != null ? email.hashCode() : 0);
        return result;
    }
}

// Lombok ilə istifadəçi modeli
import lombok.Data;

@Data
public class UserLombok {
    private String username;
    private String email;
    // Getterlər, setterlər, konstruktörlər, equals, hashCode, toString
    // avtomatik olaraq tərtib zamanı yaradılacaq
}

Lombok istifadə etmək üçün layihə idarəetmə sisteminizə (Maven və ya Gradle) asılılığı əlavə etməli və IDE üçün plagin quraşdırmalısınız ki, annotasiyaları düzgün başa düşsün və avtomatik tamamlamanı təmin etsin.

Maven:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version> <!-- Ən son versiyanı istifadə edin -->
    <scope>provided</scope>
</dependency>

Gradle:

compileOnly 'org.projectlombok:lombok:1.18.24' // Ən son versiyanı istifadə edin
annotationProcessor 'org.projectlombok:lombok:1.18.24' // Ən son versiyanı istifadə edin

Lombok kodun miqdarını əhəmiyyətli dərəcədə azaldır, onu daha oxunaqlı edir və şablon metodların əl ilə yazılmasında səhvlərin qarşısını alır. Ancaq, unutmayın ki, o, bəzi logikanı gizlədir və bu, bəzən IDE plaginindən istifadə etmədən tərtib və ya yaradılmış kodu anlamaqda çətinlik yarada bilər.