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进阶------数组超详细整理 → |

相关推荐
laplace012320 分钟前
Java八股—MySQL
java·mysql·oracle
玖釉-21 分钟前
用 Vue + DeepSeek 打造一个智能聊天网站(完整前后端项目开源)
前端·javascript·vue.js
熙客1 小时前
TiDB:分布式关系型数据库
java·数据库·分布式·tidb
你想考研啊2 小时前
linux安装jdk和tomcat和并自启动
java·linux·tomcat
悟能不能悟4 小时前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
高山上有一只小老虎5 小时前
java 正则表达式大全
java·正则表达式
躲猫猫的喵喵5 小时前
Ubuntu2204降内核版本
linux·运维·服务器·ubuntu
_院长大人_6 小时前
设计模式-工厂模式
java·开发语言·设计模式
凌波粒6 小时前
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j
java·intellij-idea·mybatis
蓝-萧7 小时前
【玩转全栈】----Django基本配置和介绍
java·后端