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
1
2
3
4
5
6
7
8
9
|
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private String name;
private int age;
}
|
@Data
1
2
3
4
5
6
7
|
import lombok.Data;
@Data
public class User {
private String name;
private int age;
}
|
等价于:
-
@Getter+@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
构造方法注解
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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
1
2
3
4
5
6
7
8
9
|
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class User {
private String name;
private int age;
}
|
1
2
3
4
|
User user = User.builder()
.name("Tom")
.age(20)
.build();
|
@Builder 与构造方法冲突
@Builder会生成全参构造,已有相同构造会冲突;不会生成无参构造,框架反射会失败。
解决方法:改访问级别、放在构造方法上、显式加无参构造。
1
2
3
4
5
6
7
|
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Builder
public class User {
private String name;
private int age;
}
|
日志注解
1
2
3
4
5
6
7
8
|
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Demo {
public void test() {
log.info("Hello Lombok");
}
}
|
不可变对象
1
2
3
4
5
6
7
|
import lombok.Value;
@Value
public class User {
String name;
int age;
}
|
版权声明:
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!