Lombok简介、使用、工作原理、优缺点

news2025/1/16 3:59:59

学习目标:

目标

  • Lombok简介、使用、工作原理、优缺点

学习内容:

内容

  1. 定义
    Lombok 是一个 Java 库,它提供了很多有用的注解来简化 Java 代码的编写。

  2. 作用:
    使用 Lombok 可以用一些简洁的注解来自动生成大量常见的 Java 代码,从而减少样板代码的编写。

  3. Lombok 主要包含了以下常用的注解:
    (1) @Getter@Setter:为属性自动生成 getter 和 setter 方法。
    (2) @ToString:为类自动生成 toString 方法。
    (3) @EqualsAndHashCode:为类自动生成 equals 和 hashCode 方法。
    (4) @NoArgsConstructor:为类自动生成无参构造方法。
    (5) @AllArgsConstructor:为类自动生成全参构造方法。
    (6) @Data:为类自动生成 getter、setter、toString、equals 和 hashCode 方法。
    (7) @Builder:为类自动生成 Builder 模式的构造器。

  4. 原理:
    Lombok 的工作原理是在 Java 编译期间通过注解处理器来扫描指定的 Java 类,生成相应的代码,再编译成字节码文件。
    这样一来,我们就不用手动写冗余的样板代码了。

  5. Lombok 的优点:

(1). 简化代码编写:使用 Lombok 可以大幅减少样板代码的编写,加快开发效率,同时也减少代码量和维护难度。
(2). 提高代码可读性:通过自动生成常用代码,可以增强代码的可读性和一致性。
(3). 降低出错概率:由于 Lombok 自动生成的代码经过测试和验证,因此更加稳定和可靠,也可以减少程序员编写时字母书写失误带来的风险。

  1. Lombok 的缺点:

(1). 可能会引起团队协作问题:Lombok 自动生成的代码风格可能与其他程序员不同,需要特殊的设置或使用规范来确保代码质量和可读性。
(2). 有些 IDE 支持不够好:一些 IDE(如 Eclipse)可能无法支持所有的 Lombok 注解,并且可能需要专门的插件才能实现注解的正确解析。
(3). 可能会存在不兼容性问题:在有些特定的环境下,Lombok 自动注入的代码可能与其他模块不兼容,需要定位和解决。

总的来说,Lombok 是一个非常方便的 Java 开发工具,可以有效地简化 Java 代码的编写,提高开发效率和代码质量。但是使用 Lombok 也需要注意一些细节,以确保代码的可读性和可维护性。


知识小结:

提示:知识小结

  • 1、Lombok是一个Java库,通过注解的方式可以减少代码量,例如减少get、set方法和构造方法的编写。要安装和使用Lombok,有几种方法可以选择。

方法一:通过向lib文件夹中添加lombok.jar包即可。

方法二:如果使用Maven,可以在项目的pom.xml文件中添加以下依赖:

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</dependency>

另外,为了使用Lombok,还需要安装相应的插件。如果你使用的是IntelliJ IDEA开发工具,可以按照以下步骤安装lombok插件:

  • (1)、打开IDEA的设置(Settings)。
    在这里插入图片描述

  • (2)、点击Plugins。
    在这里插入图片描述

  • (3)、点击 Marketplace,在弹出的窗口中搜索lombok。
    在这里插入图片描述

  • (4)、点击安装(install)。

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

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

相关文章

EI会议----2024年控制技术、自动化与绿色城市规划国际学术会议(TAUGCP 2024)

EI会议----2024年控制技术、自动化与绿色城市规划国际学术会议(TAUGCP 2024) 2024 International Conference on Control Technology, Automation and Green Urban Planning(TAUGCP 2024) 大会主题&#xff1a;&#xff08;主题包括但不限于这些,更多详细主题请咨询苏老师&am…

缓存的使用

文章目录 1.为什么要有缓存&#xff1f;2.缓存使用场景3.缓存分类4.缓存使用模式5.淘汰策略6.缓存的崩溃与修复7.缓存最佳实践参考文献 1.为什么要有缓存&#xff1f; 数据访问具有局部性&#xff0c;符合二八定律&#xff1a;80% 的数据访问集中在 20% 的数据上&#xff0c;这…

Nuxt3: useFetch使用过程常见一种报错

一、问题描述 先看一段代码&#xff1a; <script setup> const fetchData async () > {const { data, error } await useFetch(https://api.publicapis.org/entries);const { data: data2, error: error2 } await useFetch(https://api.publicapis.org/entries);…

展会邀约 | 加速科技将携重磅产品亮相SEMICON China 2024

SEMICON China 2024将于3月20日-3月22日在上海新国际博览中心隆重举行。展会期间&#xff0c;加速科技将携重磅产品高性能数模混合信号测试机ST2500EX、LCD Driver测试机Flex10K-L、高密度数模混合信号测试系统ST2500E、高性能数模混合信号测试系统ST2500A亮相此次行业盛会&…

[Java、Android面试]_02_HashMap的原理

本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料&#xff0c;感兴趣的朋友可收藏关注。由于时间有限&#xff0c;只能每天整理一点&#xff0c;分享一点儿&#xff01; 现分享如下&#xf…

vue3/vue2若依框架对比,点击新增编辑跳转到新页面(新增编辑共用代码)

vue2若依框架&#xff1a; router里面定义好&#xff0c;编辑里面添加一个id {path: /filmManagement,component: Layout,hidden: true,redirect: noredirect,children: [{path: editFilmDetail,component: () > import(/views/filmManagement/editFilmDetail),name: editFi…

【Mac】鼠标控制\移动\调整窗口大小BBT|边缘触发调整音量\切换桌面

一直在 win 习惯了通过鼠标的侧键来控制窗口的位置、大小&#xff0c;现在找到心的解决方案了&#xff0c;通过 BBT 设置侧键按下\抬起几颗。 以下解决方案的截图&#xff0c;其中还包括了其他操作优化方案&#xff1b; 滚轮配合 cmd 键调节页面大小&#xff1b;配合 option 键…

探索C++中的动态数组:实现自己的Vector容器

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

算法思想总结:双指针算法

一、移动零 . - 力扣&#xff08;LeetCode&#xff09; 移动零 该题重要信息&#xff1a;1、保持非0元素的相对位置。2、原地对数组进行操作 思路&#xff1a;双指针算法 class Solution { public:void moveZeroes(vector<int>& nums){int nnums.size();for(int cur…

Elasticsearch:在本地使用 Gemma LLM 对私人数据进行问答

在本笔记本中&#xff0c;我们的目标是利用 Google 的 Gemma 模型开发 RAG 系统。 我们将使用 Elastic 的 ELSER 模型生成向量并将其存储在 Elasticsearch 中。 此外&#xff0c;我们将探索语义检索技术&#xff0c;并将最热门的搜索结果作为 Gemma 模型的上下文窗口呈现。 此外…

人工智能迷惑行为大赏!

目录 人工智能迷惑行为大赏 一&#xff1a;人工智能的“幽默”瞬间 1. 图像识别出现AI的极限 2. 小批量梯度下降优化器 3. 智能聊天机器人的冰雹问题 4. 大语言模型-3经典语录 二&#xff1a;技术原理探究 1. 深度学习 2. 机器学习 3. 自然语言处理 4. 计算机视觉 三…

java八股文 笔记(持续更新中~)

1 Redis 2Mysql 3JVM 4java基础底层 5 spring 6 微服务 7.......(持续更新) One:Redis篇 1.穿透 2&#xff1a;击穿 3&#xff1a;雪崩 3 33 4:双写一致 5.持久化 2 JVM: 2&#xff1a; 3&#xff1a; 4&#xff1a; 5&#xff1a; 6&#xff1a; 7&#xff…

学生时期学习资源同步-1 第一学期结业考试题1

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载

深度学习--离线数据增强

最近做项目遇见数据集背景非常单一&#xff0c;为了增加模型的返回能里&#xff0c;只能自己做一些数据增强来增加背景的多样性。代码如下&#xff1a; import numpy as np import cv2def create_mask(box, height, width):"""创建一个全零的掩码图像&#xff…

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)–最佳实践指南 0.前言 左图右图 prompt 基本是一样的&#xff0c;差别只在提示工程这个词是否用中英文表达。我们看到&#xff0c;一词之差&#xff0c;回答质量天壤之别。为了获得理想的模型结果&#xff0c;我们需要调整设…

uniapp开发DAPP钱包应用(二) Vue + Java

上一节我们讲了如何通过vue uniapp还有web3以及需要准备的相关组件&#xff0c;来搭建了DAPP开发的环境。 这一节&#xff0c;我们来说说如何用代码来实现DAPP相关接口。 1. ethers实现类 导入组件 import { ethers , providers , utils } from "ethers"; impor…

跟着GPT学设计模式之桥接模式

说明 桥接模式&#xff0c;也叫作桥梁模式&#xff0c;英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中&#xff0c;桥接模式是这么定义的&#xff1a;“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就…

我真是服了!你们刚开始学习的时候也是造火箭吗?能不能有一个简单的纯纯纯html模板给我学学,真的看不懂好嘛!

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…

弧形导轨的设计要求

制造业设备种类越来越多&#xff0c;非标自动化设备渐渐成了主力市场&#xff0c;其中弧形导轨线体作为非标自动化运输中的基石&#xff0c;承担了运输&#xff0c;定位&#xff0c;特殊工位组装&#xff0c;其设计要求也非常严格。 1、精度要求&#xff1a;弧形导轨需要具备高…

大数据 - HBase《一》- Hbase基本概念

目录 1.1. Hbase简介 1.2 Hbase,Hive, Mysql对比 1.3 Hbase数据模型 &#x1f959;region(区域) &#x1f959;rowkey(行键) &#x1f959;列族&#xff08;column family) &#x1f959;列&#xff08;column Qualifier) &#x1f959;版本&#xff08;version)-默认按…