前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >带你快速入门 Java开发神器 lombok

带你快速入门 Java开发神器 lombok

作者头像
陶然同学
发布于 2023-02-27 01:53:42
发布于 2023-02-27 01:53:42
27300
代码可运行
举报
文章被收录于专栏:陶然同学博客陶然同学博客
运行总次数:0
代码可运行

在写JavaBean对象时候 每次都要重复Alt+insert写Getter/Setter toString 有参构造 和 无参构造 特别麻烦 浪费时间 今天给大家推荐神器lombok 官方支持的神器 可以帮您省去大量时间 让代码简洁易读

什么是lombok

Project Lombok 是一个 java 库,可自动插入您的编辑器和构建工具,为您的 java 增添趣味。 永远不要再编写另一个 getter 或 equals 方法,使用一个注释,您的类就有一个功能齐全的构建器、自动化您的日志记录变量等等。

安装lombok

lombok安装有两种方法 一种是idea插件安装 一种是导入lombok坐标

第一种:idea插件安装

  • File > Settings > Plugins
  • 点击Browse repositories...
  • 搜索Lombok Plugin
  • 点击Install plugin
  • 重启 IntelliJ IDEA

第二种:导入lombok坐标(最新版本1.18.22)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>

lombok的使用

以下是常用的lombok注解 其他注解参考文档

@Data

最常用的注解 使用该注解 @Getter/@Setter @toString @NoArgsContructor @AllArgisConstructor 等

只需要一个@Data 一共标准的JavaBean就生成了

例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Data
public class Demo {
    private String id;
    private String name;
}

编译后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    private String id;
    private String name;

    public Demo() {
    }

    public String getId() {
        return this.id;
    }

    public String getName() {
        return this.name;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof Demo)) {
            return false;
        } else {
            Demo other = (Demo)o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                Object this$id = this.getId();
                Object other$id = other.getId();
                if (this$id == null) {
                    if (other$id != null) {
                        return false;
                    }
                } else if (!this$id.equals(other$id)) {
                    return false;
                }

                Object this$name = this.getName();
                Object other$name = other.getName();
                if (this$name == null) {
                    if (other$name != null) {
                        return false;
                    }
                } else if (!this$name.equals(other$name)) {
                    return false;
                }

                return true;
            }
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof Demo;
    }

    public int hashCode() {
        int PRIME = true;
        int result = 1;
        Object $id = this.getId();
        int result = result * 59 + ($id == null ? 43 : $id.hashCode());
        Object $name = this.getName();
        result = result * 59 + ($name == null ? 43 : $name.hashCode());
        return result;
    }

    public String toString() {
        return "Demo(id=" + this.getId() + ", name=" + this.getName() + ")";
    }
}

@Setter

作用于该属性上 自动默认生成Getter方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Setter
public class Demo {
    private String id;
    private String name;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    private String id;
    private String name;

    public Demo() {
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }
}

@Getter

@Getter方法与@Setter方法一样 这里不描述了

@NonNull

作用于属性或方法的参数上 用于做非空检查 如果是空 抛出空指针异常

使用方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    @NonNull
    private String id;
    private String name;
}

编译后效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    @NonNull
    private String id;
    private String name;

    public Demo() {
    }
}

@ToString

无需通过调试来查看字段 只需要添加@ToString 让lombok自动生成

使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@ToString
public class Demo {
    private String id;
    private String name;
}

编译后效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    private String id;
    private String name;

    public Demo() {
    }

    public String toString() {
        return "Demo(id=" + this.id + ", name=" + this.name + ")";
    }
}

@AllArgsConstructor

作用于类上 自动生成一个全参构造方法

使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@AllArgsConstructor
public class Demo {
    private String id;
    private String name;
}

编译后效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    private String id;
    private String name;

    public Demo(String id, String name) {
        this.id = id;
        this.name = name;
    }
}

@NoArgsConstructor

跟@AllArgsConstructor效果一样生成构造方法 只不过是无参构造

@EqualsAndHashCode

作用于类上,生成equals、canEqual、hashCode方法。

使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@EqualsAndHashCode
public class Demo {
    private String id;
    private String name;
}

编译后效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    private String id;
    private String name;

    public Demo() {
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof Demo)) {
            return false;
        } else {
            Demo other = (Demo)o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                Object this$id = this.id;
                Object other$id = other.id;
                if (this$id == null) {
                    if (other$id != null) {
                        return false;
                    }
                } else if (!this$id.equals(other$id)) {
                    return false;
                }

                Object this$name = this.name;
                Object other$name = other.name;
                if (this$name == null) {
                    if (other$name != null) {
                        return false;
                    }
                } else if (!this$name.equals(other$name)) {
                    return false;
                }

                return true;
            }
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof Demo;
    }

    public int hashCode() {
        int PRIME = true;
        int result = 1;
        Object $id = this.id;
        int result = result * 59 + ($id == null ? 43 : $id.hashCode());
        Object $name = this.name;
        result = result * 59 + ($name == null ? 43 : $name.hashCode());
        return result;
    }
}

@RequiredArgsConstructor

作用于类上 生成被@NonNull 或 被final修饰的属性的构造方法

使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RequiredArgsConstructor
public class Demo {
    @NonNull
    private String id;
    private final String name;
}

编译后效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Demo {
    @NonNull
    private String id;
    private final String name;

    public Demo(@NonNull String id, String name) {
        if (id == null) {
            throw new NullPointerException("id is marked non-null but is null");
        } else {
            this.id = id;
            this.name = name;
        }
    }
}

@SneakyThrows

作用于方法上 在方法内部添加try-catch

使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @SneakyThrows
    public String getValue(){
        return "a";
    }

编译后效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public String getValue() {
        try {
            return "a";
        } catch (Throwable var2) {
            throw var2;
        }
    }

@Value

作用于类上,会生成全参数的构造方法、getter方法、equals、hashCode、toString方法。

小结

对于刚学习Java的小白 lombok是不推荐的 等熟悉构造之后 在尝试使用lombok 提高效率

参考文档

lombok官网:Project Lombok

https://projectlombok.org/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
4K屏、无线充电、没有Home键,盘点那些关于iPhone7的“黑科技”
据报道,苹果目前已经进入iPhone7发布的准备阶段了!由于苹果一向保持严谨的保密风格,关于iPhone7的消息并不多。 不过,好奇心强的外媒或多或少已经扒到一些关于iPhone7的信息。下一代iPhone也许将颠覆以前的经典设计,性能更加强悍,并配备一系列黑科技来袭。 一、外观设计焕然一新 据悉,iPhone7将放弃全铝制机身外壳。众所周知,2007年第一代iPhone采用的是全铝外壳。到了iPhone 3G和iPhone 3GS,则改用了聚碳酸酯塑料外壳。然后从iPhone4和iPhone4s又改成玻璃
镁客网
2018/05/25
4900
如何在iPhone上安装Android操作系统,而且还不需要刷机,体验也很流畅
本文是教各位如何安装谷歌的Android操作系统到iPhone上。事先警告,动手能力不强,不喜欢折腾的同学还是不要试了。
知识与交流
2024/04/02
4K0
如何在iPhone上安装Android操作系统,而且还不需要刷机,体验也很流畅
苹果无线网服务器绕过id,最新绕过苹果id方法[通俗易懂]
1.先将设备进入DFU模式,将你的iPhone关机,同时按住开关机键和Home键,当你看见白色的苹果Logo时,请松开开关机键,并继续保持按住Home键。
全栈程序员站长
2022/09/29
3.3K0
苹果无线网服务器绕过id,最新绕过苹果id方法[通俗易懂]
【教程】checkra1n越狱教程+常用插件推荐
重要:越狱骨灰级玩家请忽略本篇文章,篇幅较长,大约2500+字,突有不适感,请返回上一页,继续忙你的事情
zby1101
2020/08/05
10.9K0
【教程】checkra1n越狱教程+常用插件推荐
U盘越狱iPhone绕ID最新教程及各种坑解决,吐血之作(超详细超简单教程)[通俗易懂]
这是安装多个苹果版本及虚拟机版本后成功的教程,由于资源上传到百度云盘下载只有几十KB,所以为了大家能够尽快的体验上苹果系统,文章中涉及的所有工具请大家点击链接进行下载(越狱及绕ID工具:https://download.csdn.net/download/yioye/16731023)
全栈程序员站长
2022/11/09
4.4K0
U盘越狱iPhone绕ID最新教程及各种坑解决,吐血之作(超详细超简单教程)[通俗易懂]
偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
Intro 虽然“只有偏执狂才能够生存”这句话已经被假药停给毁了,但是作为一只有逼格的高大上的iOS逆向分析研究员,难道如果有现成的macOS/iOS全版本镜像可以下载并且无限“漫游”,难道你就不想来一套么? 在本文中,你将能够获得的是: 1.macOS:10.12、10.11、10.10、10.9、10.8、10.7:六个版本的虚拟机一键安装; 2 .使用苹果的KDK套件(Kernel Develop Kit)对虚拟机里的macOS Sierra 10.12进行内核调试; 3 .iPhone 4s
FB客服
2018/02/27
3K0
偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
如何通过U盘越狱iPhone绕ID最新详细简单教程
3.将准备的U盘插上电脑,点击"Select drive",选中插上的U盘
知识与交流
2021/04/02
7K0
如何通过U盘越狱iPhone绕ID最新详细简单教程
无需SHSH不完美降级iPhone/iTouch 4
由于 IOS 系统存在刷机验证,在相应版本系统关闭验证后无法刷入设备,导致 IOS 设备无法降级。虽然较老的 A4 设备能够通过保存 SHSH 降级,但仍存在诸多不便,例如需要实现保存对应版本的 SHSH。即便有 SHSH 的帮助,你仍然无法将 A4 设备降级到比出厂更低的版本。但由于 A4 处理器存在硬件漏洞,近日有网友发布出了针对 A4 设备免 SHSH 不完美降级教程,能够恢复至 IOS4-5的任意系统版本。
reizhi
2022/09/26
2.2K0
无需SHSH不完美降级iPhone/iTouch 4
当你的苹果手机出现白苹果了该怎么办[淘宝花了100块]
就在不久前,为了尝鲜,给苹果升级了IOS16系统,等更新完后发现一大堆问题,就想着降级,返回到15版本
Shunnet
2022/09/01
1.6K0
u盘越狱卡代码怎么办_使用爱思助手制作越狱U盘教程
这是安装多个苹果版本及虚拟机版本后成功的教程,由于资源上传到百度云盘下载只有几十KB,所以为了大家能够尽快的体验上苹果系统,文章中涉及的所有工具请大家点击链接进行下载(越狱及绕ID工具:https://download.csdn.net/download/yioye/16731023)
全栈程序员站长
2022/09/30
5K0
u盘越狱卡代码怎么办_使用爱思助手制作越狱U盘教程
unc0ver5.0.0完美解决卡1、卡25的问题_钟意博客
最近unCover5.0.0版本的发布让大家热血沸腾,但是可以发现会有卡1、卡25问题,那么这个文章就来解决这个问题.
RONG荣
2021/10/11
5.4K0
unc0ver5.0.0完美解决卡1、卡25的问题_钟意博客
iPhone无法开机? 一招帮你“救活”
有些同学因为资金不充裕会选择买内存小的iPhone,这确实可以省下一笔钱。但是用久之后就会发现内存远远不够,滑手机的时候经常会收到清理空间的提示。如果这种时候将手机关机的话,可能再也开不了机了。
洋葱雪饼
2021/06/20
1.3K0
iPhone无法开机? 一招帮你“救活”
苹果ios爱思助手企业证书自签的详细图文教程
3.添加好Apple ID后,添加 IPA,根据自己喜好选择越狱工具,这里以Unc0ver为例。
季春二九
2023/04/27
4.8K0
苹果ios爱思助手企业证书自签的详细图文教程
iphone4装android,iPhone4可安装Android实现双系统启动.pdf
iPhone 4 可安装 Android 实现双系统启动iPhone 4 可安装 Android 实现双系统启动 苹果的 iOS 以其封闭性而著称 相比 Android 这种开放性系统 iOS 很难移植到其他设备上 不过 Android 就已经成功的入侵到 iPhone 手机之中 使用 iPhoDroid 工具就可以很容易的将 iPhone 变成一部 iOS 和 Android 双系统启动设备 近日这款工具再次进行升级 对安装步骤进行了大幅度优化并抛弃了电 脑的支持 用户只需操作手机就可以完成整个过程 目前 iPhoDroid 支持的机型有安装 3 1 2 和 3 1 3 的 iPhone 以及 3 1 2 以上系统的 iPhone 3G 手 机必须使用 PwnageTool 红雪 黑雨越狱工具完成越狱 首先需要在Cydia中添加http repo neonkoala co uk链接 然后寻找并安装Bootlace 成功安装之 后会看到桌面上出现Bootlace图标 打开Bootlace然后安装OpeniBoot 打开之后点击iDroid并进行安装 在iDroid安装完成之后 iPhone 就可以成为一部双启动手机 用户可以使用电源键或 Bootlace 应用选择重启手机 然后点击 QuickBoot 按钮 选择 Android 图标即可进入 Android 系统 安装视频教程 安装视频教程 iPhone 2G 3G 安装 AndroidiPhone 2G 3G 安装 Android 2 22 2 这是一篇翻译的文章 我是第一次看到可以在iphone 或者ipod touch上安装android系统 但是google一 下 发现很多 图文教程 但是这篇文章介绍的方法和目前的不太一样 那就是不需要连接电脑 而是 直接通过你的掌上设备的Cydia来安装 所以还是介绍一下 E文好的直接看原文原文 也许在你的 iphone 2G 3G 当然 老的 ipod touch 也是可以的 上安装 android 系统的方式是通过之前 介绍过的 iPhoDroid 但问题是你需要电脑来完成整个安装的过程 但是感谢 Bootlace 2 1 的出现 现在 你不需要连接任何 PC 或者 MAC 也可以在你的 iphone 2G 3G 上安装 Android 2 2 1 Froyo 了 准备工作 首先 需要注意的是 Bootlace 2 1 仅仅适用于以下版本的 iOS 1 iPhone 2G 上的 iOS 3 1 2 和 3 1 3 2 iPhone 3G 上的 iOS 3 1 2 3 1 3 4 0 4 0 1 4 0 2 和 4 1 其次 Bootlace 2 1 支持的越狱工具有 PwnageTool Redsn0w Blackra1n 如果你满足以上的条件 那么就可以使用下面的方法进行安装 否则 不要轻易尝试 安装方法
全栈程序员站长
2022/09/18
1.2K0
详细说明Ipad1 4.3.5的越狱过程
前言,使用Ipad很久了,但是都是老实巴交的使用APPLE提供的功能,没有使用很多的软件,因为要收费,只是看一看pdf和视频。但是时间长了,感觉不新鲜了,看了很久越狱的好处和弊端,心里痒痒的。最好终于手痒痒了,开始动手了。但是开始不顺利,我一直是跟着升级固件,最后升级到4.3.1,当我想升级到4.3.3后越狱时,出现了3194的错误信息,看了很多方法,都解决不了,最好试了试小雨伞的tss服务。终于开始安装,但是不幸半路就报错了。我分析这个问题,可能是我ipad被APPLE改动了,我使用Itune连接了,但是没有更新,最新的固件已经是4.3.5了,现在只能更新到4.3.5了。网上找了一下,还没有完美越狱的方法,只能先不完美了。下面将我越狱的步骤和过程写出来给大家。
全栈程序员站长
2022/11/05
1.1K0
详细说明Ipad1 4.3.5的越狱过程
IOS7完美越狱方法教程及工具下载
就在几天之前,Apple发布了IOS7 beta2测试版。相比于beta1而言,第二个测试版对于性能和稳定性都做出了不少优化,并且带来了Ipad支持。相信不少喜欢尝鲜的朋友已然更新到IOS7 beta2了。但对于国内的很多用户而言,越狱仍然是必不可少的一个步骤。虽然IOS7的越狱工具还没有出现,但如果你有一台iPhone 4,则可以利用已有的工具对IOS7进行越狱。
reizhi
2022/09/26
1.3K0
IOS7完美越狱方法教程及工具下载
手把手教大家学习,全网最详细的手机全机型 刷机教程
通俗来讲刷机就是给手机重装系统。刷机可以使手机的功能更加完善并且可以使手机还原到原始状态。一般情况下Android手机出现系统被损坏造成功能失效或无法开机也通常通过刷机来解决。一般Andriod手机刷机分为线刷卡刷。
知识与交流
2024/05/07
6.8K0
手把手教大家学习,全网最详细的手机全机型 刷机教程
手机密码忘了怎么办,如何轻松搞定适用:于安卓,苹果。
你一定有过手机忘记密码的经历吧?小编在就经常会把手机密码记错,这个时候十分的着急,试了一遍又一遍还是不对,那么,遇到手机忘记密码怎么办 ?今天在小编教你一招,轻松搞定。
知识与交流
2022/04/28
5.8K0
手机密码忘了怎么办,如何轻松搞定适用:于安卓,苹果。
checkra1n越狱ipadmini2_checkra1n不能跳过激活
​ 有一天我想安装duet display(付费软件) 把IPAD作为PC的副显示器, 然后在能的淘宝上买了个账号,登录之后,安装之后,忘记退ID了,然后我还给抹除了设置,重启之后出现ID锁,心塞然后开始绕ID之路经过两天的研究终于搞定。
全栈程序员站长
2022/11/08
3.8K0
checkra1n越狱ipadmini2_checkra1n不能跳过激活
IOS越狱学习总结
iOS 越狱(iOS Jailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用 户使用这种技术及软件可以获取到 iOS 的最高权限,甚至可能可以进一步解开运营商对手机网络的限制 。 中文名称 iOS越狱 外文名称 iOS Jailbreaking 应 用 电子产品 类 型 软件 目录 1 简 介 2 用途 3 针对的设备 4 越狱前注意事项 5 不完美越狱 简 介 越狱软件适用于iPhone、iPod touch、iPad及 Apple TV 第二代上的 iOS 系统。用户越狱完毕之后,可
全栈程序员站长
2022/09/18
2K0
推荐阅读
相关推荐
4K屏、无线充电、没有Home键,盘点那些关于iPhone7的“黑科技”
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档