Java进阶——Lombok的使用

Lombok可以通过注解的方式,在编译时自动生成 getter、setter、构造函数、toString 等样板代码,从而减少代码的冗余,提高开发效率。本文深入讲解Lombok在实际开发中的使用。

本文目录

      • [1. Lombok 依赖添加](#1. Lombok 依赖添加)
      • [2. 常用Lombok注解及使用场景](#2. 常用Lombok注解及使用场景)
        • [2.1 @Getter 和 @Setter](#2.1 @Getter 和 @Setter)
        • [2.2 @ToString](#2.2 @ToString)
        • [2.3 @EqualsAndHashCode](#2.3 @EqualsAndHashCode)
        • [2.4 @NoArgsConstructor、@RequiredArgsConstructor和 @AllArgsConstructor](#2.4 @NoArgsConstructor、@RequiredArgsConstructor和 @AllArgsConstructor)
        • [2.5 @Data](#2.5 @Data)
        • [2.6 @Builder](#2.6 @Builder)

1. Lombok 依赖添加

xml 复制代码
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
    <scope>provided</scope>
</dependency>

2. 常用Lombok注解及使用场景

2.1 @Getter 和 @Setter

自动生成类中所有属性的 getter 和 setter 方法。可以用在类上,为所有属性生成;也可以用在单个属性上,只为该属性生成。

java 复制代码
import lombok.Getter;
import lombok.Setter;


@Getter
@Setter
public class Product {
    private String productId;
    private String productName;
    private double price;
    private int stock;
}
2.2 @ToString

自动生成类的 toString 方法,方便打印对象的信息。可以通过 exclude 属性排除某些不需要显示的属性,通过 includeFieldNames 属性控制是否显示属性名。

java 复制代码
import lombok.ToString;

@ToString(exclude = "orderDetails")
public class Order {
    private String orderId;
    private String customerId;
    private java.util.List<OrderDetail> orderDetails;
}
2.3 @EqualsAndHashCode

自动生成类的 equalshashCode 方法。可以通过 exclude 属性排除某些不需要参与比较的属性。

java 复制代码
import lombok.EqualsAndHashCode;

@EqualsAndHashCode(exclude = "password")
public class User {
    private String userId;
    private String username;
    private String password;
}
2.4 @NoArgsConstructor、@RequiredArgsConstructor和 @AllArgsConstructor
  • @NoArgsConstructor:生成无参构造函数。
  • @RequiredArgsConstructor :为类中所有被 final 修饰的属性和被 @NonNull 注解的属性生成构造函数。
  • @AllArgsConstructor:生成包含所有属性的构造函数。
java 复制代码
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;


@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class ProductCategory {
    private String categoryId;
    private final String categoryName;
    private String description;
}
2.5 @Data

@Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor 的组合注解,一次性为类生成常用的方法。

java 复制代码
import lombok.Data;


@Data
public class CartItem {
    private String cartItemId;
    private String productId;
    private int quantity;
}
2.6 @Builder

为类生成建造者模式的代码,通过链式调用的方式方便地创建对象。

java 复制代码
import lombok.Builder;

// 优惠券实体类
@Builder
public class Coupon {
    private String couponId;
    private String couponName;
    private double discount;
    private java.util.Date expirationDate;
}

// 使用建造者模式创建对象
Coupon coupon = Coupon.builder()
        .couponId("123")
        .couponName("满减优惠券")
        .discount(10.0)
        .expirationDate(new java.util.Date())
        .build();

|-----------------------------------------------------------------------------------------------------|--------------------|--------------------------------------------------------------------------------------------------|
| ← 上一篇 Java进阶------常用类及常用方法详解 | 记得点赞、关注、收藏哦! | 下一篇 Java进阶------数组超详细整理 → |

相关推荐
京东云开发者1 分钟前
EXCEL导入—设计与思考
java·架构
CF14年老兵7 分钟前
「Vue 3 + View Transition 实现炫酷圆形缩放换肤动画」
前端·css·trae
Warren9810 分钟前
软件测试-Selenium学习笔记
java·javascript·笔记·学习·selenium·测试工具·安全
小璞22 分钟前
05_CursorRules_代码审查篇_Rule_code-review
前端
前端小书童24 分钟前
前端开发中的css:「ink → Bootstrap → 预处理器 → Tailwind → UnoCSS」
前端·css
萌萌哒草头将军25 分钟前
有了它 ,我彻底告别了 try-finally 🔥🔥🔥
前端·javascript·vue.js
冬至z26 分钟前
Vue 2 项目中快速集成 Jest 单元测试(超详细教程)
前端·单元测试
小璞26 分钟前
03_CursorRules_UI还原篇_Rule_ui-restoration
前端
小璞27 分钟前
01_CursorRules_需求理解篇_Rule_requirement-understanding
前端