Project Lombok – no more boilerplate code
Jeśli nudzi Cię żmudne pisanie (lub generowanie przez IDE) getterów, setterów, konstruktorów, hashcode’ów, equalsów, toStringów itd, to Lombok jest właśnie dla Ciebie.
Oto kilka jego możliwości.
gettery i settery
Wystarczy udekorować żądane pola adnotacjami @Getter / @Setter.
import lombok.Getter;
import lombok.Setter;
public class User {
@Getter
private long id;
@Getter
private int birthYear;
@Getter
@Setter
private String login;
@Getter
@Setter
private String password;
}
Odpowiednie metody zostaną wygenerowane i będą widoczne w IDE.

Będą także w skompilowanej klasie.
<barista@javaczyherbata.pl> javap User
Compiled from "User.java"
public class User extends java.lang.Object{
public User();
public long getId();
public int getBirthYear();
public java.lang.String getLogin();
public void setLogin(java.lang.String);
public java.lang.String getPassword();
public void setPassword(java.lang.String);
}
<barista@javaczyherbata.pl>
Więcej informacji o @Getter / @Setter.
konstruktory i toString
import lombok.*;
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(exclude = "password")
public class User {
@Getter
private long id;
@Getter
private int birthYear;
@Getter
@Setter
private String login;
@Getter
@Setter
private String password;
public static void main(String[] args) {
final User user = new User(100L, 1980, "barista", "**************");
System.out.println(user);
}
}
Po uruchomieniu programu, obiekt User ładnie się przedstawia.
<barista@javaczyherbata.pl> java User User(id=100, birthYear=1980, login=barista) <barista@javaczyherbata.pl>
Więcej informacji o @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor oraz @ToString.
equals i hashcode
Jeśli obiekt będzie używany z kolekcjami, warto wygenerować equals i hashcode.
Więcej informacji o @EqualsAndHashCode.
Kompleksowo: gettery, settery, equals, hashcode, toString oraz konstruktor (wymagany)
Adnotacja @Data to skrót do poprzednich czterech + @RequiredArgsConstructor.
Więcej o @Data.
close (z interfejsu strumieni) w sekcji finally
Generuje odpowiednią sekcję try-finally i zamyka strumień.
Więcej o @Cleanup.
lepsza synchronizacja metod
Synchronizuje na osobnym locku; jeśli się go nie wskaże w atrybucie, zostanie utworzony (z Object[0]).
Więcej o @Synchronized.
logger
Zwraca jedną z czterech implementacji logowania.
Więcej o @Log, @CommonsLog, @Log4j i @Slf4j.
kilka eksperymentalnych feature’ów
Więcej o @Accessors, @ExtensionMethod, @FieldDefaults, @Wither i @Value.
Jeśli z jakichś powodów nie chcemy już więcej używać Lomboka lub potrzebujemy generowany kod w kodzie źródłowym, możemy użyć delomboka.