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

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

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

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

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!

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

官方文档https://projectlombok.org/features/index.html

Lombok插件初步了解相关推荐

  1. IntelliJ IDEA 2020.2.1 发布,Lombok插件可能被官方支持

    1. 前言 最近两个版本的Intellij IDEA没有办法使用lombok插件了,这种问题已经出现了多次,导致胖哥依然使用2020.1的旧版本.其实很多人和我一样也回滚到了旧版本.我一直认为是lom ...

  2. linux上logbok实时日志_日志lombok插件安装及配置

    安装lombok插件 运行Lombok.jar java -jar D:\001_software\work\Java\libs\lombok.jar 确认完eclipse的安装路径后,点击insta ...

  3. IDE安装Lombok插件提高开发效率

    Lombok官方api:https://projectlombok.org/features/index.html 使用lombok之后,省去了许多没必要的get,set,toString,equal ...

  4. eclipse lombok插件安装_如果你是Java架构师或项目经理,项目技术会允许使用Lombok吗?

    Lombok Lombok项目是一个Java库,通过注解,来消除Java类中的大量样板代码.比如常见的Getter&Setter.toString().构造函数等等. 看个例子,以前我们构建一 ...

  5. 关于lombok插件的使用,强大的简化代码工具

    关于下载和安装lombok插件,过程特别简单,可以参考: https://blog.csdn.net/longloveqing/article/details/81539749 安装好后,下面介绍下l ...

  6. IDEA 2019.1 不支持lombok插件问题解决方案

    1.先到gitHub把IDEA2019.1对应版本下载下来,下面是地址 https://github.com/mplushnikov/lombok-intellij-plugin/releases/t ...

  7. lombok插件:Data自动get/set方法, Slf4j实现Logger的调用

    lombok插件:Data自动get/set方法, Slf4j实现Logger的调用 lombok.Data import lombok.Data; import org.hibernate.anno ...

  8. eclipse lombok插件安装_便捷开发,解放双手,lombok插件

    lombok是一款Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO). 在实际开发中,是不是发现经常需要变更model类.vo类.dto等一些实体类,随便 ...

  9. IDEA 集成Lombok 插件-安装插件

    IntelliJ IDEA 是一款非常优秀的集成开发工具,功能强大,而且插件众多.lombok 是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过lombok 注解减少getter ...

最新文章

  1. Vue打包后部署使用Nginx
  2. ROS系统 动作编程
  3. 【JavaSE_08】Java中static、继承、重写-思维导图
  4. rip协议的V1和V2的更新机制
  5. JAVA开发工具整理
  6. java uuid静态方法_Java UUID compareTo()方法与示例
  7. 企业内容管理-互联网应用
  8. 机器学习之Adaboost (自适应增强)算法
  9. MATLAB产生线性等分量函数 linspace
  10. python计算工资编程-当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
  11. 基于kotlin的coroutines的生命周期管理
  12. MongoDB 通过 Java 代码 批量操作
  13. c语言宠物店管理系统,宠物店信息管理系统的设计课程设计报告精选.doc
  14. tesorflow2.1.0环境下,tf.keras使用Range优化器(RAdam+Lookahead)
  15. 个人计算机与工作站 服务器有什么区别,工作站与服务器有什么区别?
  16. 小游戏:红色警戒争霸战!
  17. 使用python turtle绘制简笔画大白
  18. 自然常数e(无理数)探究
  19. 白盒测试——NextDate函数测试(基本路径覆盖法)
  20. 如何解决ACCESS中select TOP语句返回全部记录问题?(转)

热门文章

  1. 有关论文参考文献格式的笔记
  2. mac装mac和window双系统
  3. Excel 自动生成序号公式
  4. 高通骁龙820A车用处理器全面解读
  5. jsp足球直播论坛的设计与实现
  6. python判断n是否为完全数_判断一个数是否为完数
  7. set echo on/off,set term on/off,set feedback off,set heading off命令
  8. DirectX12(D3D12)基础教程(十六)——实现渲染线程池:3个内核同步对象实现渲染线程池/大规模线程池
  9. 抖音吸粉两种玩法,哪一种坚持了,都会有效果!
  10. 不卸载原有mysql直接安装mysql8.0