当前位置: 首页 > news >正文

Java进阶——Lombok的使用

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

本文目录

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

1. Lombok 依赖添加

<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 方法。可以用在类上,为所有属性生成;也可以用在单个属性上,只为该属性生成。

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 属性控制是否显示属性名。

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 属性排除某些不需要参与比较的属性。

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:生成包含所有属性的构造函数。
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 的组合注解,一次性为类生成常用的方法。

import lombok.Data;


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

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

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

相关文章:

  • 做汽车介绍视频的网站吗百度指数排名热搜榜
  • 网站发展阿里云域名注册万网
  • wordpress怎么上传自己的网站搜索引擎优化报告
  • 成都网页设计价格seo搜索推广费用多少
  • 漯河做网站哪家好企业网站建设目标
  • 西安网站建设设计天津seo推广
  • WinFrom真入门(1)——Windows窗体应用概念
  • 华为配置篇-BGP实验
  • mac Python多版本第三方库的安装路径
  • 深入剖析 JVM:从组成原理到调优实践
  • pyopenjtalk因cmake版本太高导致pip无法安装
  • PHP泛型与集合的未来:从动态类型到强类型的演进
  • MFC中CMap类的用法和原理
  • 【机器人】复现 GraspNet 端到端抓取点估计 | PyTorch2.3 | CUDA12.1
  • c++的特性——多态
  • 服务热升级的方法
  • C++ 中的 decltype:从表达式中推断类型(二十八)
  • RK3588使用笔记:纯linux系统下基础功能配置(不定期更新)
  • MySQL内存管理机制详解
  • 【差分隐私相关概念】数据立方体(Data Cube)
  • C#里使用libxl的对齐/边框/颜色
  • 【极速版 -- 大模型入门到进阶】Transformer: Attention Is All You Need -- 第一弹
  • 基于python大数据的旅游可视化及推荐系统
  • JavaScript中var、let和const的区别
  • 深入理解分布式事务Saga,从入门到面试热点分析详解
  • 05-021-自考数据结构(20331)- 动态查找-例题分析