博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lombok的使用
阅读量:6703 次
发布时间:2019-06-25

本文共 3115 字,大约阅读时间需要 10 分钟。

一、lombok简介

lombok是在学习过程中发现的一个非常好用的小工具,用了之后感觉的确很不错,所以特此来推荐一下。

lombok的官方地址:

lombok的Github地址:

那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。

lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,这就是lombok的神奇作用。

虽然有人可能会说IDE里面都自带自动生成这些方法的功能,但是使用lombok会使你的代码看起来更加简洁,写起来也更加方便。

二、lombok安装

lombok的安装跟一般引用jar包没有什么区别,可以到官网上下载最新的jar包,然后导入到项目里面就好啦。

Maven添加依赖

<dependencies>

org.projectlombok
lombok
1.16.10

</dependencies>

Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

三、lombok使用

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

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

使用lombok:

import lombok.NonNull;

public class NonNullExample extends Something {    private String name;      public NonNullExample(@NonNull Person person) {    super("Hello");    this.name = person.getName();}

}

不使用lombok:

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:

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:

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:

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:

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!

还有其他一些比如自动生成日志对象等等之类的注解可以到官方网站去了解,就不一一列举了。

官方文档

转载地址:http://ijblo.baihongyu.com/

你可能感兴趣的文章
careercup-递归和动态规划 9.3
查看>>
Jar
查看>>
kafka Windows客户端Linux服务器---转
查看>>
hadoop mapreduce 基础实例一记词
查看>>
Oracle Trunc
查看>>
链表中倒数第k个结点
查看>>
traceroute工作原理
查看>>
C++入门知识总结(1)
查看>>
IntegrityError duplicate key value violates unique constraint - django/postgres
查看>>
Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)
查看>>
【Todo】Nodejs学习计划
查看>>
快速缓存接口开发
查看>>
SQLAlchemy ORM高级查询之过滤,排序
查看>>
Tomcat源码解读系列(一)——server.xml文件的配置
查看>>
进程的创建与可执行程序的加载
查看>>
大商创 sql追踪 卖家入驻
查看>>
CSS中如何把Span标签设置为固定宽度
查看>>
android设计的布局在阿拉伯语下界面错乱的解决方法
查看>>
HDU 1253 胜利大逃亡 NYOJ 523【BFS】
查看>>
VIM 插入
查看>>