Lombok详解

lombok介绍

lombok可以通过简单的注解的形式来帮助我们简化和消除一些必须有但显得很臃肿的Java代码,比如常见的Getter&Setter、toString()、构造函数等等。lombok不仅方便编写,同时也让我们的代码更简洁。

lombok提供了一个功能完整的jar包,可以很方便的与我们的项目进行集成。

maven依赖

以maven项目为例,pom文件中引入:

org.projectlombok

lombok

1.16.20

provided

lombok插件安装

下载lombok.jar,(https://projectlombok.org/download.html),建议下载与项目中依赖的lombok版本一致或者更高。

将下载好的lombok.jar移至eclipse的根目录,和 eclipse.ini 文件平级的。

在lombok.jar 的目录下,运行:

java -jar lombok.jar

a. 运行后会弹框如下框,直接点确定

b. 点specify location 按钮,选择eclipse的安装目录,选择到eclipse层即可。

按如下图步骤点击install即可

c. 成功后如下图:

黑框框也多了很多log:

看看是否真的安装成功,可以在 eclipse.ini 中看看,我的环境是多了一行(-javaagent:D:\Program Files\eclipse\lombok.jar)

重启eclipse,再clean project。

若是idea,则打开IDEA,选择 file -> settings -> plugins;

在搜索框中输入Lombok plugin,点击install;重启IDEA,安装完成。

** @NonNull**

给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)。

** @Getter/@Setter**

使用在成员变量或者类上,为特定成员变量/类中所有变量生成Getter/Setter方法。

@ToString

用在类上,可以自动覆写toString方法,当然还可以加其他参数,例如@ToString(exclude=”id”)排除id属性,或者@ToString(callSuper=true, includeFieldNames=true)调用父类的toString方法,包含所有属性。

@EqualsAndHashCode

自动生成hashCode() 和 equals()方法。

@Data

注解在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor

示例:

使用@Data注释改造下DataDemo,效果如下。需要注意的是使用@RequiredArgsConstrutor生成静态方法需指定staticConstructor的值。

@Data(staticConstructor = "lombok")

public class DataDemo{

private final String name;

@Setter(value = AccessLevel.PACKAGE) private int age;

private double score;

private String[] tags;

@ToString(includeFieldNames=true)

@Data(staticConstructor="of")

public static class Exercise {

private final String name;

private final T value;

}

}

@Value

用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法,具体示例可以参考@Data部分

@Log

lombok可以快速生成多种常用日志实例,包括Commonslog、log、log4j、slf4j等等,具体的使用可以依照需求灵活选择。

** @Cleanup**

这个注解用在变量前面,可以保证此变量代表的资源会被自动关闭,默认是调用资源的close()方法,如果该资源有其它关闭方法,可使用@Cleanup(“methodName”)来指定要调用的方法.

示例:

@Cleanup不仅减少了代码编写,同时也避免了可能的泄露问题,CleanUpDemo的lombok改造效果如下。

public class CleanUpDemo {

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);

}

}

}

本文由来源 jackaroo2020,由 system_mush 整理编辑,其版权均为 jackaroo2020 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

java lombok ppt,Lombok详解相关推荐

  1. Java JUC并发编程详解

    Java JUC并发编程详解 1. JUC概述 1.1 JUC简介 1.2 进程与线程 1.2 并发与并行 1.3 用户线程和守护线程 2. Lock接口 2.1 Synchronized 2.2 什 ...

  2. Java版人脸检测详解下篇:开发java应用并做成docker镜像

    本篇概览 如果您看过<Java版人脸检测上篇>一文,甚至动手实际操作过,那么你应该会对背后的技术细节感兴趣,开发这样一个应用,咱们总共要做以下三件事: 1.准备好docker基础镜像 2. ...

  3. Java版人脸检测详解下篇:编码

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 如果您看过<三分钟极速体验:Java版 ...

  4. Java线程池ThreadPool详解

    Java线程池ThreadPool详解 1. 线程池概述 1.1 线程池简介 1.2 线程池特点 1.3 线程池解决问题 2. 线程池原理分析 2.1 线程池总体设计 2.6 线程池流转状态 2.2 ...

  5. JAVA文件上传详解(附源码)

    文章目录 JAVA文件上传详解(附源码) 1.准备工作 2.使用类介绍 FileItem类 ServletFileUpload类 3.代码编写 JAVA文件上传详解(附源码) 在web应用中,文件上传 ...

  6. Java单元测试之JUnit4详解

    2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...

  7. tracepro应用实例详解_建筑安装工程造价,高清PPT图文详解,小白也能学会的简单步骤...

    建筑安装工程造价,高清PPT图文详解,小白也能学会的简单流程 工程造价的直意就是工程的建造价格,是指进行某项工程建设所花费的全部费用.工程造价在工程中是很关键的存在,是工程能够取得的关键:对工程建设的 ...

  8. java -jar 和 -cp详解

    java -jar 和 -cp详解 命令行执行程序 假如我们有一个程序,把它打包成Test.jar,如何运行才能成功输出Hello World package com.test; public cla ...

  9. java访问修饰符详解——学java,零基础不怕,不只要理论,更要实践+项目,a href=http://www.bjweixin.com太原维信科技提供 /a...

    java访问修饰符详解--学java,零基础不怕,不只要理论,更要实践+项目 <a href=http://www.bjweixin.com>太原维信科技提供 </a> pub ...

  10. Java编程配置思路详解

    Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...

最新文章

  1. 判断手机所属三大运营商 移动、联通、电信
  2. 函数中返回char *类型
  3. 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)
  4. MySQL之mysql客户端工作的批处理一些使用手法
  5. window2003 server的一些优化设置_windows 2003
  6. 20应用统计考研复试要点(part6)--统计学
  7. maven mysql的jdbctemplate_JDBC、JDBCTemplate、MyBatis、Hiberante 比较与分析
  8. #leetcode刷题之路35-搜索插入位置
  9. 什么是机器阅读理解?跟自然语言处理有什么关系?
  10. 扫地机器人开机充电还是关机充电器_新手机是开机充电好,还是关机充电好,老司机告诉你...
  11. .vue文件 转换成html,在vue中把含有html标签转为html渲染页面的实例
  12. DirectShow录屏,帧率不可控制?
  13. 数字图像处理与应用——图像滤波技术
  14. 正则表达式验证手机号,正则表达式验证邮箱号,正则表达式验证QQ号,正则表达式验证微信号等
  15. 【强化学习】 Nature DQN算法与莫烦代码重现(tensorflow)
  16. Succinctly 中文系列教程(三)20220109 更新
  17. python去重txt文本_Python实现的txt文件去重功能示例
  18. 产品专利和方法专利对比分析
  19. 汇率兑换——小象学院知识点
  20. 【蓝桥杯备考】Acwing周赛 第41场 Java题解

热门文章

  1. 关于XML字符串和XML Document之间的转换
  2. CSS中clear:both用法及事例
  3. c++ makefile和cmake
  4. 关于struct和class的知识
  5. 802.11ax速览
  6. 处理 Archlinux 报错
  7. 【回放视频+PPT下载整理】Elasticsearch Meetup系列第二期
  8. SpringBoot | 第十章:Swagger2的集成和使用
  9. linux系统查看分区文件系统
  10. 10.15 iptables filter表小案例;10.16—10.18 iptables nat