Java 常用库-Lombok
Lombok 常用注解
| 注解 | 功能 |
|---|---|
Getter/Setter |
自动生成 Getter/Setter 方法 |
@Data |
包含 Getter/Setter、toString()、equals()、hashCode()、RequiredArgsConstructor
|
@NoArgsConstructor |
无参构造方法 |
@AllArgsConstructor |
全参构造方法 |
@RequiredArgsConstructor |
生成包含 final 或 @NonNull 字段的构造方法 |
@Builder |
构建者模式 |
@Slf4j |
自动生成 log 日志对象(SLF4J) |
@Value |
不可变类(final 字段 + Getter + 全参构造) |
@SneakyThrows |
自动抛出受检异常 |
Getter / Setter
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private String name;
private int age;
}
@Data
import lombok.Data;
@Data
public class User {
private String name;
private int age;
}
等价于:
@Getter+@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor
构造方法注解
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.NonNull;
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class User {
@NonNull
private String name;
private int age;
}
@Builder
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class User {
private String name;
private int age;
}
User user = User.builder()
.name("Tom")
.age(20)
.build();
@Builder 与构造方法冲突
@Builder会生成全参构造,已有相同构造会冲突;不会生成无参构造,框架反射会失败。解决方法:改访问级别、放在构造方法上、显式加无参构造。
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Builder
public class User {
private String name;
private int age;
}
日志注解
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Demo {
public void test() {
log.info("Hello Lombok");
}
}
不可变对象
import lombok.Value;
@Value
public class User {
String name;
int age;
}
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!