Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Lombok介绍及使用方法

Lombok介绍及使用方法

作者头像
用户1205080
发布于 2019-04-25 07:04:28
发布于 2019-04-25 07:04:28
75300
代码可运行
举报
文章被收录于专栏:编码前线编码前线
运行总次数:0
代码可运行

一、前言

Lombok 是一个 Java 库,它作为插件安装至编辑器中,其作用是通过简单注解来精简代码,以此达到消除冗长代码的目的。

二、简单介绍

2.1 优点

1) 通过注解自动生成成员变量的 getter、setter 等方法,使代码简洁

2) 修改类变量名时,无需关注其 getter、setter 等方法

2.2 缺点

降低源码文件的可读性。

2.3 原理

从 Java 6 开始,javac 就支持 JSR 269 API 规范,而 Lombok 实现 JSR 269 Pluggable Annation Processing API 规范。

当我们编写代码并保存后,编辑器会自动编译源码文件,在这个过程中,源码先被转化为 AST。

然后,Lombok 插件解析 AST 是否存在 Lombok 的注解。如果存在则修改 AST ,使其生成注解对应的代码。

最终将修改的 AST 解析并生成字节码文件。

三、安装插件

为编辑器安装 Lombok 插件。

3.1 IDEA 安装

在 IDEA 界面点击 “File”->”Settings” 弹出设置框,选择左侧 “Plugins”,通过 “Browse repositories” 搜索 lombok 关键字安装即可。

3.2 Eclipse 安装

点击 Lombok.jar,下载该 jar 包。

双击 jar 包会弹出一个安装界面,点击界面的“Specify location…” 安装选择 Eclipse 的安装路径(精确到 eclipse.exe)。

四、使用

使用 Lombok 的方法非常简单,就是在类上或者成员变量上添加注解即可。

为了能使用注解,我们还需要在项目中引入 lombok 的 jar 包。

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

lombok使用

lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解,这里不一一罗列,只说明其中几个比较常用的。

@NonNull: 可以帮助我们避免空指针。

使用lombok:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import lombok.NonNull;
    public class NonNullExample extends Something {
        private String name;  
        public NonNullExample(@NonNull Person person) {
        super("Hello");
        this.name = person.getName();
    }}

不使用lombok:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class NonNullExample extends Something {
    private String name;  
    public NonNullExample(@NonNull Person person) {
        super("Hello");
        if (person == null) {
            throw new NullPointerException("person");
        }
        this.name = person.getName();
    }}
@Cleanup: 自动帮我们调用close()方法。

使用lombok:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import lombok.Cleanup;import java.io.*;public class CleanupExample {
    public static void main(String[] args) throws IOException {
        @Cleanup InputStream in = new FileInputStream(args[0]);
        @Cleanup OutputStream out = new FileOutputStream(args[1]);
        byte[] b = new byte[10000];
        while (true) {
            int r = in.read(b);
            if (r == -1) break;
            out.write(b, 0, r);
        }
    }}

不使用lombok:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.io.*;
    public class CleanupExample {
        public static void main(String[] args) throws IOException {
            InputStream in = new FileInputStream(args[0]);
            try {
                OutputStream out = new FileOutputStream(args[1]);
                try {
                    byte[] b = new byte[10000];
                    while (true) {
                    int r = in.read(b);
                    if (r == -1) break;
                    out.write(b, 0, r);
                    }
                } finally {
                    if (out != null) {
                        out.close();
                    }
                }
            } finally {
                if (in != null) {
                in.close();
            }
        }
    }}
@Getter / @Setter: 自动生成Getter/Setter方法

使用lombok:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    public class GetterSetterExample {
        @Getter @Setter private int age = 10;
        @Setter(AccessLevel.PROTECTED) private String name;
    }

不使用lombok:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class GetterSetterExample {
    private int age = 10;
    private String name;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    protected void setName(String name) {
        this.name = name;
    }}

@NoArgsConstructor: 自动生成无参数构造函数。 @AllArgsConstructor: 自动生成全参数构造函数。 @Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor! 还有其他一些比如自动生成日志对象等等之类的注解可以到官方网站去了解,就不一一列举了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编码前线 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Lombok介绍、使用方法和总结
1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not-quite-java code. 大致意思是Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。 2 Lombok使用方法 Lombok能以简单的注解形式来简化java代码,提高开发人员的开发
猿人谷
2018/03/28
1.5K0
Lombok介绍、使用方法和总结
【侠客行】Lombok深度解析
Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。
大蕉
2019/09/23
6360
【侠客行】Lombok深度解析
lombok插件使用_cesium显示全球视野
lombok是java自动生成代码的插件。它能提高开发效率,减少自己编写繁琐的代码,让代码看起来更整洁简略,比如getter、setter、equals以及construct等方法。其也有val、var这种自动判断变量类型的变量定义方式(类似javascript中的let、const)。
全栈程序员站长
2022/10/04
4410
lombok插件使用_cesium显示全球视野
Lombok详解
1. Lombok简介 官网地址:https://projectlombok.org/ Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为你优化Java代码。 所以可以不用再手写一个getter、setter或equals方法。 2. 变量使用介绍 2.1 val修饰变量 可以使用val作为局部变量声明的类型,而不用实际编写该类型。 当您执行此操作时,将从初始值设定项表达式中推断出类型。 局部变量也将成为final类型的变量。 此功能仅适用于局部变量和foreach循环,不适用于字
牧晗
2020/06/05
1.3K0
Lombok详解
Lombok
定位到file/setings/plugins/markeptlace搜索Lombok
框架师
2021/03/08
6110
Lombok
Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它!
Lombok是一款Java代码功能增强库,在Github上已有9.8k+Star。它会自动集成到你的编辑器和构建工具中,从而使你的Java代码更加生动有趣。通过Lombok的注解,你可以不用再写getter、setter、equals等方法,Lombok将在编译时为你自动生成。
macrozheng
2021/01/06
9450
Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它!
Lombok常用注解
作用类上:生成所有成员变量的getter/setter方法 成员变量:生成该成员变量的getter/setter方法 案例:
ha_lydms
2023/08/10
2130
Lombok常用注解
lombok在java项目中的使用
@NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructor
jinjunzhu
2020/08/20
6280
优雅的Java工具库Lombok
最近在公司的项目中看到了对于Lombok的应用,通过@Data注解标注POJO,省略了大量的getter/setter代码,原先冗长的POJO在瘦身之后直接变得干净、清爽,程序员再也不需要去关注那些长长的方法,只需要集中注意力于字段field之中
互扯程序
2018/10/08
1.2K0
优雅的Java工具库Lombok
Java开发的效率工具--Lombok
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more. ######################################################## 大概的意思:Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。
框架师
2020/07/09
7290
Java开发的效率工具--Lombok
走进Java接口测试之效率插件lombok
我们在开发测试代码过程中,通常都会定义大量的 JavaBean ,然后通过IDE 去生成其属性的构造器、getter、setter、equals、hashcode、toString 方法,当要增加属性或者对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法。这样重复的劳动没有任何意义,Lombok 里面的注解可以轻松解决这些问题。
高楼Zee
2019/07/17
6540
走进Java接口测试之效率插件lombok
Java效率工具Lombok使用及原理
在过往的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
Bug开发工程师
2019/05/05
5690
Java效率工具Lombok使用及原理
CTO:不要在代码中写 set/get 方法了,逮一次罚款...
刚开始学习 Java 语言的时候,面向对象的三大特征就是封装,继承,和多态。在 Java 中,要保证封装性,需要将成员变量私有化,对外提供 set/get 方法来访问,虽然现在的 IDE,像 eclipse,IDEA都提供了快捷键,来生成 set/get 方法,但是在做项目的时候,一个 JavaBean 往往会有很多的成员变量,一个变量对应两个方法,如果有10几个成员变量,那么会对应20多个方法,也许还要去写构造器、equals 等方法,而且需要维护。这样一来,会使代码变得非常冗余,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。
开发者技术前线
2020/11/23
5540
CTO:不要在代码中写 set/get 方法了,逮一次罚款...
优雅的JAVA工具库LOMBOK
最近在公司的项目中看到了对于Lombok的应用,通过@Data注解标注POJO,省略了大量的getter/setter代码,原先冗长的POJO在瘦身之后直接变得干净、清爽,程序员再也不需要去关注那些长长的方法,只需要集中注意力于字段field之中
java架构师
2019/01/03
5340
IDEA 2022 之 Lombok 使用 教程
​ Lombok是使用java编写的一款开源类库。其主作用是使用注解来代替一些具有格式固定,没有过多技术含量的编码工作。使我们可以仅仅在代码中添加一个注解(annotation),就可以起到和编写一大段代码一样的作用。对于这些格式固定的的代码,IDE也提供了自动生成的功能,但是无论是自动生成还是纯手动写,这些代码在类中是实实在在的存在,有时候,看到一个类文件很长,其中却都是一些,没有任何技术含量的getter和setter方法。无疑会影响我们的代码阅读。而使用Lombok可以将这些“无用”的代码,通过相应的注解替换掉。好了,废话少说,进入主题:
猫头虎
2024/04/08
4320
IDEA 2022 之 Lombok 使用 教程
Lombok详解
lombok可以通过简单的注解的形式来帮助我们简化和消除一些必须有但显得很臃肿的Java代码,比如常见的Getter&Setter、toString()、构造函数等等。lombok不仅方便编写,同时也让我们的代码更简洁。 lombok提供了一个功能完整的jar包,可以很方便的与我们的项目进行集成。
Java架构师必看
2021/03/22
5110
Lombok详解
加倍提升开发效率,继续深挖Lombok的使用
本篇来接续上一篇文章 这些极简的注解你都清楚吗,主要介绍一下 Lombok 非常用注解。
cxuan
2019/08/09
7700
加倍提升开发效率,继续深挖Lombok的使用
Java 之 Lombok 必知必会
在目前众多编程语言中,Java 语言的表现还是抢眼,不论是企业级服务端开发,还是 Andorid 客户端开发,都是作为开发语言的首选,甚至在大数据开发领域,Java 语言也能占有一席之地,如 Hadoop,Spark,Flink 大数据等。而作为已经诞生 24 年的 Java 相比其他语言来说,编写起来略显得冗长和复杂,而为了能极大提升 Java 开发的效率和代码简洁性,一个 Java 库 Lombok 就这样诞生了。
闻人的技术博客
2019/09/19
9030
Java 之 Lombok 必知必会
如何用好 IDEA ,Java 撸码效率至少提升 5 倍?
以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
芋道源码
2019/06/15
5540
一份不可多得的 Lombok 学习指南
Lombok 是一款 Java 开发插件,使得 Java 开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的 Java 模型对象(POJO)。在开发环境中使用 Lombok 插件后,Java 开发人员可以节省出重复构建,诸如 hashCode 和 equals 这样的方法以及各种业务对象模型的 accessor 和 toString 等方法的大量时间。对于这些方法,Lombok 能够在编译源代码期间自动帮我们生成这些方法,但并不会像反射那样降低程序的性能。
阿宝哥
2019/11/06
9700
一份不可多得的 Lombok 学习指南
相关推荐
Lombok介绍、使用方法和总结
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验