Lombok 在 IntelliJ IDEA 中的使用步骤

Lombok 是一个非常流行的 Java 库,它通过注解简化 Java 类的开发,特别是在处理 POJO(Plain Old Java Objects)类时,如生成 getter、setter、toString 等常用方法。Lombok 在减少样板代码(boilerplate code)方面非常有用。在 IntelliJ IDEA 中使用 Lombok 插件,可以极大简化开发过程。

1. 安装 Lombok 插件

要在 IntelliJ IDEA 中使用 Lombok,首先需要安装 Lombok 插件:

  • 步骤
    1. 打开 IntelliJ IDEA,点击 File > Settings(或者快捷键 Ctrl + Alt + S)。
    2. 在设置窗口中,选择左侧的 Plugins,然后在右上角的搜索框中输入 Lombok
    3. 找到 Lombok 插件,点击 Install
    4. 安装完成后,重新启动 IntelliJ IDEA 以使插件生效。

2. 在 pom.xml 中引入 Lombok 依赖

安装完插件后,你还需要在项目的 pom.xml 中引入 Lombok 的 Maven 依赖:

步骤:           

  1. 打开 pom.xml 文件。
  2. <dependencies> 节点中添加以下内容:
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version> <!-- 检查 Lombok 最新版本 --><scope>provided</scope>
</dependency>

   3.同步 Maven 项目,IntelliJ IDEA 会自动下载依赖。 

3. 配置 IDEA 支持 Lombok 注解处理器

为了确保 Lombok 正常工作,你需要在 IntelliJ IDEA 中开启注解处理器。

  • 步骤
    1. 点击 File > Settings,在设置窗口中选择 Build, Execution, Deployment > Compiler > Annotation Processors
    2. 勾选 Enable annotation processing 选项。
    3. 点击 Apply 并确认。

4. 使用 Lombok 注解

现在你可以在代码中使用 Lombok 提供的注解来简化代码。例如:

4.1@Getter 和 @Setter

自动生成 getter 和 setter 方法。

import lombok.Getter;
import lombok.Setter;public class User {@Getter @Setterprivate String name;@Getter @Setterprivate int age;
}

4.2@ToString

自动生成 toString() 方法。

import lombok.ToString;@ToString
public class User {private String name;private int age;
}

4.3@NoArgsConstructor 和 @AllArgsConstructor

自动生成无参和全参构造函数。

import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;@NoArgsConstructor
@AllArgsConstructor
public class User {private String name;private int age;
}

4.4@Data

自动生成 getter、setter、toString、hashCode、equals 方法,还可以生成无参构造函数。

import lombok.Data;@Data
public class User {private String name;private int age;
}

4.5 @Builder

用于实现 Builder 模式,它允许你一步步地构建一个对象,而不是通过构造函数一次性设置所有字段。

import lombok.Builder;@Builder
public class User {private String name;private int age;
}
  • 使用方式:
    User user = User.builder().name("John").age(25).build();
    
  • @Builder 使得你可以使用流式 API 来创建对象。它在创建复杂对象时非常有用,特别是那些拥有很多字段的对象。
  • Lombok 的 @Builder 注解允许你使用流式 API来创建对象,而不需要手动编写构造函数。

  • 主要特点

    • 无需一次性传递所有成员变量:你可以根据需要只设置部分成员变量,而不需要为每个参数创建多个构造函数。
    • 无需手动编写构造函数:Lombok 会自动生成一个带有所有成员变量的 Builder 类来代替构造函数。
  • 使用方式

    • 使用 @Builder 注解后,你可以通过 User.builder() 创建一个 UserBuilder 对象,然后链式调用设置各个属性,最后通过 .build() 方法生成最终对象。
    • 你可以只赋值部分变量,其他变量会保留默认值。


4.6 @Value

  • 作用:为不可变类生成代码(类似 final 的效果)。所有字段都将是 private final,并且会自动生成 gettertoString()equals()hashCode()全参构造函数
import lombok.Value;@Value
public class User {private String name;private int age;
}
  • @Value 会自动把类的字段设为 final,并且不会生成 setter 方法,以确保对象的不可变性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544165.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

LSI SAS 9361-8i和SAS3008 12 gb / s PCIe 3.0 RAID 阵列卡配置

LSI SAS 9361-8i和SAS3008 12 gb / s PCIe 3.0 RAID 阵列卡配置 开机&#xff0c;BIOS自检&#xff0c;可以看到设备硬盘信息&#xff0c;以及提示CtrlR进入Raid卡配置界面。 按CtrlR进入Raid卡配置界面&#xff0c;一般来说使用CtrlR进入Raid卡配置界面的Raid卡配置都通用。 …

ant design vue实现表格序号递增展示~

1、代码实例 //current当前页数 //pageSize每页记录数 const columns [{title: 序号,width: 100,customRender: ({ index }) > ${index (current.value - 1) * pageSize.value 1},align: center,fixed: left,} ] 2、效果图

9.24今日错题解析(软考)

前言 这是用来记录我每天备考软考设计师的错题的&#xff0c;今天知识点为操作系统和数据结构&#xff0c;大部分错题摘自希赛中的题目&#xff0c;但相关解析是原创&#xff0c;有自己的思考&#xff0c;为了复习&#xff1a;&#xff09;&#xff0c;最后希望各位报考软考的…

【第十九章:Sentosa_DSML社区版-机器学习之模型评估】

目录 19.1 评估 19.2 混淆矩阵 19.3 ROC-AUC 19.4 时间序列模型评估 【第十九章&#xff1a;Sentosa_DSML社区版-机器学习之模型评估】 19.1 评估 1.算子介绍 评估算子(EvaluationNode) 用于评估用当前数据训练出来的模型的正确性&#xff0c;显示对模型各个评价指标的具…

从零预训练一个tiny-llama#Datawhale组队学习Task2

完整的教程请参考&#xff1a;datawhalechina/tiny-universe: 《大模型白盒子构建指南》&#xff1a;一个全手搓的Tiny-Universe (github.com) 这是Task2的学习任务 目录 Qwen-blog Tokenizer&#xff08;分词器&#xff09; Embedding&#xff08;嵌入&#xff09; RMS …

个人行政复议在线预约系统开发+ssm论文源码调试讲解

第二章 开发工具及关键技术介绍 2.1 JAVA技术 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterprise JavaBeans&#xff09;的全面支持&#xff0c;java servlet API&#xff0c;JSP&#xff08;java server pages…

武汉正向科技 格雷母线定位系统生产厂家

为了适应机车无人化项目对地址高精度的要求&#xff0c;我们推出了高精度格雷母线&#xff0c;根据地址的检测原理&#xff0c;地址精度取决于格雷母线最小交叉环的精度&#xff0c;传统的格雷母线内胆采用柔性泡沫内胆&#xff08;图片1&#xff09;&#xff0c;格雷母线最小交…

末端无人配送产业链

末端无人配送产业链涵盖部件、系统、整车制造、运营服务、应用场景等五大环节。 四类企业竞逐末端配送&#xff0c;“科技公司物流企业”成最佳CP、平台公司蓄势待发

浏览器指纹修改指南2024 -了解SpeechVoice(四)

引言 随着互联网技术的飞速发展,用户隐私保护的重要性日益凸显。浏览器作为我们访问互联网的主要工具之一,其独特的指纹信息却成为了用户隐私的一大隐患。浏览器指纹技术利用浏览器的各种特性,如用户代理(User Agent)、字体列表、插件等,生成一个独一无二的识别码,使得用户即便…

详细分析SpringMvc中HandlerInterceptor拦截器的基本知识(附Demo)

目录 前言1. 基本知识2. Demo3. 实战解析 前言 对于Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 HandlerInter…

MFC - 复杂控件_2

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天讲解剩下的复杂控件知识点 IP地址栏 绘图准备: 调整windows窗口大小、设置 ip address control设置 Button按钮&#xff0c;修改名称 添加IP栏 变量&#xff1a;m_IP 获取IP栏内容 void CMFCApplication3Dlg::…

C++中的string模拟实现

上一章讲了库中的string函数&#xff0c;这次我们来讲一讲模拟实现 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<assert.h> using namespace std; //域名 namespace zzj {class String {public:typedef char* iterator;typedef const char* cons…

【Java 问题】基础——Java 概述

Java 概述 1. 什么是 Java ?2. Java 语言有哪些特点3. JVM、JDK 和 JRE 有什么区别&#xff1f;4. 说说什么是跨平台性&#xff1f;原理是什么&#xff1f;5. 什么是字节码&#xff1f;采用字节码的好处是什么&#xff1f;6. 为什么说 Java 语言 "编译与解释并存"?…

将 Go 作为脚本语言用及一些好用的包

前言 Go 作为一种可用于创建高性能网络和并发系统的编程语言&#xff0c;它的生态应用变得越来越广泛&#xff0c;同时&#xff0c;这也激发了开发人员使用 Go 作为脚本语言的兴趣。虽然目前 Go 还未准备好作为脚本语言 “开箱即用” 的特性&#xff0c;用来替代 Python 和 Ba…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【Perf调测】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 Perf为性能分析工具&#xff0c;依赖PMU&#xff08;Per…

HTML讲解(三)通用部分

目录 1.空格标记 2.特殊文字的标记 3.注释语句 4.对文字字体的设置 5.修改文字形态 6.换行标记 7.居中标记 8.水平线标记 9.设置滚动弹幕 1.空格标记 在HTML中&#xff0c;我们想打印空格并不能直接敲一个空格键&#xff0c;因为如果是敲空格键&#xff0c;那无论你敲…

2万字长文超全详解!深度学习时代阴影检测、去除与生成在图像与视频中的全面综述

论文链接&#xff1a;https://arxiv.org/pdf/2409.02108 Github链接&#xff1a;https://github.com/xw-hu/Unveiling-Deep-Shadows 亮点直击 深度学习时代阴影分析的全面综述。本文对阴影分析进行了深入的综述&#xff0c;涵盖了任务、监督级别和学习范式等各个方面。本文的分…

SpringBoot整合ELK实现日志监控(保姆级教程)

新建SpringBoot项目 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…

虚幻引擎的三种输入模式和将控件显示到屏幕上

首先要知道一个概念 , HUD 和 Input 都是由 PlayerController 来控制的 而虚幻的Input控制模式有三种 Set Input Mode Game Only (设置输入模式仅限游戏): 视角会跟着鼠标旋转 , 就是正常游戏的模式 , 这也是游戏默认输入模式 Set Input Mode UI Only (设置输入模式仅限UI): …

231. 2 的幂 简单递归 python除法的类型

已解答 简单 相关标签 相关企业 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&…