IDEA插件-Lombok

news2024/11/25 16:35:25

在 Java 开发领域中,Lombok 插件已经成为一个非常流行的代码库。该插件让 Java 开发更加便捷、高效,因此提高了开发者的生产力。本文将对 Lombok 插件进行详细的介绍和分析。

1.Lombok是什么

Lombok 是一款 Java 开发工具,它可以通过注解来帮助程序员自动生成 Java 代码,从而简化 Java 开发过程。

Lombok 插件产生的主要原因是 Java 语言臃肿的语法,需要大量的样板代码,以及冗长臃肿的 getter 和 setter 方法。当你的模型层非常大时,手动编写所有这些代码会变得非常繁琐和无聊。因此,Lombok 插件为我们自动生成 Java 代码并帮助优化 Java 开发过程,提高效率。

2.安装Lombok

打开 IDEA 设置页面:

在插件页面搜索“Lombok”安装即可:

3.Lombok插件的特性

Lombok 插件的主要特性在于三个方向:

  • 自动生成 setter、getter、toString、equals、hashCode 等代码;
  • 自动清除构造函数、getter、setter 方法中的样板代码;
  • 自动创建日志对象。

下面对其功能特性进行详细介绍。

3.1 自动生成setter、getter方法以及其它方法

在 Java 中,setter 和 getter 方法是用来访问类的私有成员的典型方式。大量的 setter 和 getter 代码让类变得复杂、让代码变得冗长,因此开发者需要花费很多时间来编写这些代码。

使用 Lombok 插件,开发者就不必再手动编写 setter 和 getter 方法。Lombok 插件中的注解允许在编译时生成setter、getter、toString 等方法。你只需要在变量上添加注解,就可以使用 getter、setter 等方法,如下所示:

import lombok.Getter; 
import lombok.Setter; 

@Getter
@Setter
public class Person {
  private String name;
  private int age;
}

在上面的例子中,我们可以看到,在类中我们使用了 @Getter@Setter 注解。这两个注解告诉编译器自动生成 getter 和 setter 方法。

3.2 自动删除样板代码

在 Java 中,setter 和 getter 方法总是以一个样板代码开头和结束,每次编写都要编写这些代码。而 Lombok 插件可以通过注释来自动删除样板代码。很多程序员都不喜欢这些样板代码,这给他们带来很多痛苦。使用Lombok,程序员就可以不再编写这些样板代码了,这样可以减少代码复杂度和开发时间。

下面是一个使用 Lombok 来自动删除样板代码的示例:

public class Person {
  private String name;
  private int age;

  public Person() {}

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
}

在上面的代码中,添加了无参构造函数和有参构造函数,这两个构造函数的代码是一样的,将它们注释掉之后,可以使用 @NoArgsConstructor@AllArgsConstructor 这两个 Lombok 注解代替它们。

import lombok.NoArgsConstructor; 
import lombok.AllArgsConstructor;

@NoArgsConstructor 
@AllArgsConstructor
public class Person {
  private String name;
  private int age;
}

3.3 在Lombok插件中创建日志对象

在 Java 中,我们使用 Logger 来记录日志。Logger 是一个非常有用的工具,因为它可以帮助我们在应用程序中记录信息并跟踪错误。但是,在 Java 中使用 Logger 是三行组成的样板代码。使用 Lombok,我们可以在类中定义一个 Logger 对象,只需简单地使用 @Slf4j 注解:

import lombok.extern.slf4j.Slf4j; 

@Slf4j
public class TestLogger {
  public static void main(String[] args) {
    log.debug("Hello Logger");       //输出 DEBUG [main] "Hello Logger"
    log.info("Hello Logger");        //输出 INFO  [main] "Hello Logger"
    log.warn("Hello Logger");        //输出 WARN  [main] "Hello Logger"
    log.error("Hello Logger");       //输出 ERROR [main] "Hello Logger"
  }
}

在上面的例子中,使用 @Slf4j 注解为 TestLogger 创建了一个 Logger 对象。在 main 方法中,我们可以调用 log 的对应方法作为记录日志信息的方法。

4.使用Lombok

为了使用 Lombok 插件,我们需要在项目中设置依赖。我们可以通过 Maven 或 Gradle 来添加依赖。下面是一个使用 Maven 添加 Lombok 的 pom.xml 文件的例子:

<dependencies>
  <!--Lombok-->
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.10</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

在 Maven 项目中,我们将 Lombok 添加为 scoped 为 provided 的依赖项。这意味着 Lombok 其实并没有被打包进 JAR 文件中,只有在编译时会从 Maven 中加载。

5.Lombok注解速查表

下表总结了 lombok 的全部注解及其作用:

注解名称作用
@Data生成Getter、Setter、toString、equals和hashCode方法
@Getter、@Setter生成Getter、Setter方法
@ToString生成toString方法
@EqualsAndHashCode生成equals和hashCode方法
@NoArgsConstructor生成无参构造方法
@AllArgsConstructor生成全参构造方法
@RequiredArgsConstructor生成构造方法,只包含带有 @NonNull 注解的成员变量
@NonNull标识成员变量不允许为空
@Slf4j自动生成Slf4j的日志变量
@Log4j自动生成Log4j的日志变量
@Slf4j、@Log4j、@Log等自动生成对应框架的日志变量
@Builder提供一种流畅的、便于阅读的构建器模式
@Value类似于@Data,但只生成Getter方法,且生成不可变类
@UtilityClass表示当前类是一个实用类,其中的静态方法都是直接调用,不需要创建实例

5.总结

Lombok 插件是 Java 开发领域中越来越受欢迎的代码库之一。它使用注解的方式生成 setter、getter、hashCode、toString,简化开发过程。同时,它还可以自动删除样板代码,大大减小了代码复杂度。虽然 Lombok 插件的效果很好,但还是有很多开发者反对使用该插件。因此,我们应该权衡利弊,了解 Lombok 的优缺点后,再决定是否使用。

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

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

相关文章

《离散数学导学》精炼——第8章(关系)

学无止境追求真&#xff0c;勤奋刻苦起点新。每日精进千里路&#xff0c;成功不是梦想闲。 文章目录引言正文第八章 关系定义定义域&#xff0c;值域关系的逆关系上的运算&#xff08;重点&#xff09;关系的合成同类关系和异类关系关系的性质&#xff08;重难点&#xff09;顺…

OpenAI-ChatGPT最新官方接口《嵌入向量式文本转换》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(五)(附源码)

Embeddings 嵌入向量式文本转换前言Overview 概述What are embeddings? 什么是嵌入&#xff1f;How to get embeddings 如何获取嵌入python代码示例cURL代码示例Embedding models 嵌入模型Second-generation models 第二代模型First-generation models (not recommended) 第一…

Kubernetes 多集群管理工具Rancher 使用介绍

目录 一、Rancher 简介 2.1 Run Kubernetes Everywhere 2.2 满足 IT 需求规范 2.3 赋能 DevOps 开发团队 2.4 Rancher API Server 的功能 2.4.1授权和角色权限控制 2.4.2使用 Kubernetes 的功能 2.4.3 配置云端基础信息 2.4.4 查看集群信息 2.5 编辑下游集群 二、Ra…

漏洞挖掘-漏洞扫描

一、工具 1.针对某种漏洞 &#xff08;1&#xff09;sqlmap python sqlmap.py -u "url" --dbs 枚举所有数据库 python sqlmap.py -u "url" --current -db 当前数据库 python sqlmap.py -u "url" -D db_name --tables …

如何做一个园区的导航地图?园区楼宇地图导航如何实现?

如何做一个园区的导航地图&#xff1f;电子地图已成为智慧园区应用的重要组成部分和刚需&#xff0c;基于地图一方面为来园区人员进行导引&#xff0c;同时为园区内部的可视化设备设施、停车引导、物联数据的展示、园区物业资产管理等提供高效的管理工具&#xff0c;融入电子地…

数据可视化有哪些方式?【图表类型大全】

我们通常所说的数据可视化是指狭义的数据可视化&#xff0c;即将数据以图表的方式进行呈现&#xff0c;常见于PPT、报表、新闻等场景。图表是数据可视化最基础的应用&#xff0c;它代表图形化的数据&#xff0c;通常以所用的图形符号命名&#xff0c;例如使用圆形符号的饼图、使…

让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)

让你的作品更出色—— 词云Word Cloud的制作方法&#xff08;基于python) 本文目录&#xff1a; 一、词云的简介 二、 实现原理和流程 1、制作词云流程图 2、词云实现原理 三、 实现词云的方式 1、安装词云相关模块库 2、WordCloud库 3、stylecloud库 四、总结 一、词…

Point-to Analysis指针分析(1)

Point-to Analysis指针分析&#xff08;1&#xff09;_音程的博客-CSDN博客 前言 指针分析是一个非常复杂的工作&#xff0c;这些工作很多方向&#xff0c;比如是否是上下文敏感分析或上下文不敏感分析&#xff0c;显然&#xff0c;这难易度是不一样地。比如下图。对于同一段…

SAP之Suse For SAP 12 sp5安装教程(超详细)

本文将详细介绍如何在VM环境下安装Suse For SAP 12 sp5。 关于VM创建Suse Linux虚拟机的教程参考另一个博客-SAP之VM创建SUSE虚拟机。本文建立在VM已经创建好了Suse虚拟机的前提下。 一、首先进入到安装界面&#xff0c;选择“Installation”&#xff0c;按“Enter” 二、勾选…

第七章 无线与移动网络

无线网络 无线网络基本结构 无线主机&#xff1b;运行端系统设备无线链路&#xff1b;通过无线通信链路连接到一个基站或者另一条无线主机基站&#xff1b;无线网络基础设施的一个关键部分&#xff0c;负责向与之关联的无线主机发送数据和接收主机发送的数据网络基础设施&…

ROS使用(9)tf2

许多tf2教程可用于C和Python。本教程经过了精简&#xff0c;以完成C或Python。如果你想同时学习C和Python&#xff0c;你应该分别学习一次C和一次Python的教程。 工作区设置 Introduction to tf2.tf2的 介绍 本教程将给予你一个很好的想法tf2可以为你做什么。 它在一个使用tur…

自学大数据第十天~Hbase

随着数据量的增多,数据的类型也不像原来那样都是结构化数据,还有非结构化数据; Hbase时google 的bigtable的开源实现, BigtableHbase文件存储系统GFSHDFS海量数据处理MRMR协同管理服务chubbyzookeeper虽然有了HDFS和MR,但是对于数据的实时处理是比较困难的,没有办法应对数据的爆…

实现3D动画

一、transform Transform是形变的意思&#xff08;通常也叫变换&#xff09;&#xff0c;transformer就是变形金刚 常见的函数transform function有&#xff1a; 平移&#xff1a;translate(x, y) 缩放&#xff1a;scale(x, y) 旋转&#xff1a;rotate(deg) 倾斜&#xff1a;sk…

病毒丨3601lpk劫持病毒分析

作者&#xff1a;黑蛋 一、病毒简介 文件名称&#xff1a; 1f3e836b4677a6df2c2d34d3c6413df2c5e448b5bc1d5702f2a96a7f6ca0d7fb 文件类型(Magic)&#xff1a; PE32 executable (GUI) Intel 80386, for MS Windows 文件大小&#xff1a; 52.50KB SHA256&#xff1a; 1f3e836b4…

面试字节,三面HR天坑,想不到自己也会阴沟里翻船....

阎王易见&#xff0c;小鬼难缠。我一直相信这个世界上好人居多&#xff0c;但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。 在这里&#xff0c;我只想告诫大家&#xff0c;offer一定要拿到自己的手里才是真的&#xff0c;口头offer都是不牢靠的&#xff0…

可实现电控调光、宽视场角,FlexEnable曲面液晶解析

曲面显示屏、可变焦液晶透镜&#xff0c;这些似乎是属于未来AR/VR的趋势&#xff0c;而实际上已经有公司在提供此类技术&#xff0c;而这将有望对AR/VR产生重要影响。AR/VR光学专家Karl Guttag指出&#xff0c;其在CES 2023看到了一家专注于柔性显示、传感器的有机电子公司&…

传统机器学习(五)—分类、回归模型的常见评估指标

传统机器学习—分类、回归模型的常见评估指标 一、分类模型的常见评估指标 1.1 混淆矩阵 混淆矩阵&#xff0c;在无监督学习中被称为匹配矩阵(matching matrix)&#xff0c;之所以叫混淆矩阵&#xff0c;是因为我们能够很容易从图表中看到分类器有没有将样本的类别给混淆了。…

E4--光纤接口通信测试应用2023-04-17

1.场景 使用两块开发板A和B&#xff0c;通过光纤接口将在A板上ROM中存储的图片数据转发到B板并显示在B板连接的显示屏上&#xff0c;实现光纤接口通信。 具体场景是&#xff0c;由于A735T片上资源有限&#xff0c;因此ROM IP存储了一张1024*600&#xff08;LVDS屏幕&#xff0…

【Linux】调试器---gdb的使用

文章目录一.背景知识二.安装gdb三.gdb的用法使用须知gdb的常用指令1.进入调试2.退出调试操作3.显示源代码4.设置断点breakPoint5.查看断点信息/禁用断点/开启断点/删除断点6.运行程序&#xff0c;开始调试run7.查看变量8.其它重要命令一.背景知识 程序的发布方式有两种&#x…

【并发】Volatile作用详解

volatile保证变量的可见性禁止指令重排不保证原子性如何保证原子性volatile volatile关键字可以保证变量的可见性。 被volatile修饰的变量是共享的&#xff0c;因此不会将该变量上的操作与其他内存操作一起重排序。 无法保证原子性 保证变量的可见性 当多个线程访问同一个…