Java 常用库-Lombok

Lombok 常用注解

注解 功能
Getter/Setter 自动生成 Getter/Setter 方法
@Data 包含 Getter/SettertoString()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;
}
本文作者:
本文链接: https://hgnulb.github.io/blog/2026/76960112
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!