Čo je knižnica Lombok a ako sa používa vo vývoji v Jave?
sobes.tech AI
Odpoveď od AI
Lombok je knižnica pre Java, ktorá pomáha znižovať množstvo šablónového kódu (boilerplate code). Robí to automatickým generovaním metód, ako sú konštruktory, gettery, settery, equals(), hashCode() a toString() počas kompilácie na základe anotácií.
Hlavné anotácie a ich použitie:
@Getter/@Setter: Generujú metódy getX() a setX() pre polia triedy.@NoArgsConstructor,@RequiredArgsConstructor,@AllArgsConstructor: Generujú konštruktory bez argumentov, s argumentmi pre všetky polia označené ako@NonNullalebo final, a pre všetky polia.@Data: Kombinuje@ToString,@EqualsAndHashCode,@Getter,@Settera@RequiredArgsConstructor. Vhodné pre modelové triedy.@Value: Podobné ako@Data, ale robí triedu nemennou (final). Všetky polia sú predvolene private final.@Builder: Generuje kód pre vzor "Builder", ktorý zjednodušuje vytváranie objektov s mnohými poľami.@Slf4j(a ďalšie pre rôzne loggery): Vytvára statické pole loggera (log) v triede.
Príklad použitia @Data:
// Model používateľa bez Lomboku
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;
}
}
// Model používateľa s Lombokom
import lombok.Data;
@Data
public class UserLombok {
private String username;
private String email;
// Gettery, settery, konštruktory, equals, hashCode, toString
// budú automaticky generované počas kompilácie
}
Na použitie Lomboku je potrebné pridať závislosť do systému zostavovania (Maven alebo Gradle) a nainštalovať plugin do IDE, aby správne interpretoval anotácie a poskytoval automatické dopĺňanie.
Maven:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version> <!-- Použite aktuálnu verziu -->
<scope>provided</scope>
</dependency>
Gradle:
compileOnly 'org.projectlombok:lombok:1.18.24' // Použite aktuálnu verziu
annotationProcessor 'org.projectlombok:lombok:1.18.24' // Použite aktuálnu verziu
Lombok výrazne znižuje množstvo kódu, robí ho čitateľnejším a znižuje pravdepodobnosť chýb pri ručnom písaní šablónových metód. Avšak, je potrebné mať na pamäti, že skrýva časť logiky, čo môže niekedy sťažiť ladenie alebo pochopenie vygenerovaného kódu bez použitia IDE pluginu.