Lombok

Dziś rano czytając przy kawie RSSy znalazłem fajną bibliotekę. Mowa tu o narzędziu Lombok. Zdarzało Wam się pewnie nie raz pisać Klasy które mają tylko przechowywać jakieś informacje – nazywa się to chyba fachowo DTO. Weźmy sobie taki przykładzik z naszą osobą:

[java]

import java.util.Date;

public class Person {
private String name;
private String surname;
private Date birthdate;
private int pesel;
private int nip;
private double salary;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Date getBirthdate() {
return birthdate;
}
public void setBirthdate(Date birthdate) {
this.birthdate = birthdate;
}
public int getPesel() {
return pesel;
}
public void setPesel(int pesel) {
this.pesel = pesel;
}
public int getNip() {
return nip;
}
public void setNip(int nip) {
this.nip = nip;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}

}

[/java]

Widzimy że nasz Person ma kilka pól żeby mieć do nich dostęp musimy napisać settery i gettery. Tylko że jak je dopiszemy to nasza klaska staję się bardzo/dość nieczytelna. O to jak wygląda kod dający ten sam efekt przy zastosowaniu biblioteki Lombok:

[java]

import java.util.Date;
import lombok.Getter;
import lombok.Setter;

public class Person {
private @Getter @Setter String name;
private @Getter @Setter String surname;
private @Getter @Setter Date birthdate;
private @Getter @Setter int pesel;
private @Getter @Setter int nip;
private @Getter @Setter double salary;
}

[/java]

Prawda że ładniej i czytelniej ? : ) Dzięki adnotacjom @Getter i @Setter tworzymy (albo Lombok za nas tworzy) gettery i settery do danego pola. Ale możemy jeszcze bardziej sobie życie ułatwić i napisać tak:

[java]

import java.util.Date;
import lombok.Data;

public @Data class Person {
private String name;
private String surname;
private Date birthdate;
private int pesel;
private int nip;
private double salary;
}

[/java]

Teraz to już chyba nie da się skrócić bardziej : ) Adnotacja @Data tworzy nam settery i gettery ale to nie wszystko – dostajemy również metody toString() , hashCode() oraz eguals().

Biblioteka oferuje nam następujące opcje:

@Getter

@Setter

@Data

@ToString

@EqualsAndHashCode

@Cleanup

@Synchronized

@SneakyThrows

Wydaje mi się, że to całkiem ciekawa biblioteka – brawa dla autorów za pomysł.

3 komentarze to “Lombok”

You can leave a reply or Trackback this post.
  1. Avilar - 05-08-2009

    Jak na moje Krzysiu to takie pierdu pierdu :D Settery przynajmniej są po to żeby można było kontrolować wartości jakie przypisujemy polom w klasie a z tego co tu widzę ta kontrola jest nam zabierana.

  2. Kędzior - 05-08-2009

    heheh mi się podoba : ) Ale trochę się z Tobą zgadzam – tylko trochę bo w większości pisanych przeze mnie klas settery i gettery wyglądały niestety tak jak pokazałem wyżej : ) Na swoje usprawiedliwienie mam tylko to że biblioteki nie pisałem nigdy a sam sobie ufam : ) A tak całkiem serio to to jak masz coś do skontrolowania to piszesz ręcznie a reszta leci z Lombok’a

  3. Papi - 06-08-2009

    Fajna sprawa, ciekawe, czy się przyjmie :)

Leave a Reply

Your email address will not be published.