前言

Lombok主页

Lombok下载

Lombok引入项目之后,便可以使用 本文记录了在项目中应用Lombok时的使用案例,希望对朋友你有一些帮助。

  1. 可以去 下载jar包

  2. maven:

     <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version></dependency>
  3. gradle:

    // https://mvnrepository.com/artifact/org.projectlombok/lombok
    compile group: 'org.projectlombok', name: 'lombok', version: '1.16.10'

目前最新版本为1.16.10。

初学Lombok的使用时,建议配合Java的编译工具,便于理解Lombok在背后做的事情。


Lombok 安装

使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。先在官网下载最新版本的 JAR 包。

第一次使用的时候我下载的是最新版本的,也就是我现在用的1.16.10 目前版本更新很快。

1.双击下载下来的 JAR 包安装 lombok

我选择这种方式安装的时候提示没有发现任何 IDE,所以我没安装成功,我是手动安装的。如果你想以这种方式安装,请参考官网的视频。

2.eclipse 手动安装 lombok
(1). 将 lombok.jar 复制到eclipse.ini 所在的文件夹目录下
(2). 打开 eclipse.ini,在最后面插入以下两行并保存:

-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar

(3).重启 eclipse


Lombok好处在哪里?

没使用Lombok之前,定义JavaBean时,需要为每个成员定义getter/setter方法,无论手写或者自动生成,过程都不麻烦,但当Bean里的成员蛮多时,看代码的时候就比较心烦,无关的部分越来越多。随着项目的成长,代码的行数也奇迹般的增长,以至于项目经理在评估工作量时都要考虑适时的调整比率,麻烦呀。

@Data注解

通过在在class关键字前增加@Data,Lombok除了自动生成所有非final成员的getter/setter方法外,还有额外的福利,lombok同时生成了toString、equals、hashCode方法,并且完全符合规范,这样缩减了代码的规模,也少了手写toString/equals/hashCode方法的烦恼。

    @Dataclass Person{private String name;private int age;private String job;private Object info;}

@ToString注解

在调试代码时经常遇到一个问题,查看某个变量的值时,发现变量窗口展示的是一个奇怪的值(或者说对象在JVM内部表示的地址,这其实是toString方法的默认实现);想要查看对象内部各成员的值就需要逐层展开,这样才能看到内部的信息。类似的调试过程烦不胜烦,但对于定义了合适的toString方法的类的对象,调试时查看其内部成员的值则会简单许多,调试器会自动调用对象的toString方法,并将得到的字符串展示在变量值窗口,这无疑为调试带来了莫大便利。但手写toString方法其实非常麻烦,有过相关经历的朋友可能会深有体会。对于某个具体的类来说,出于安全或者性能或者其它方面的考虑,可能并不希望全部成员都出现在toString方法的返回值里。

    @ToString(exclude = { "age", "job" }, includeFieldNames = false, doNotUseGetters = true)  class Staff  {  private String name;  private int age;  private String job;  private Object info;  }  @ToString(callSuper = false)  class Student extends Staff  {  private String schoolName;  private int classNo;  }  

@EqualsAndHashCode

在项目开发过程中,虽然场景比较少,但仍然不可避免存在需要自定义equals或者hashCode方法的时候,当然这也是头疼的时候。根据《Effective Java》中的建议,equals方法和hashCode方法要同时实现,并且保证一致性。Lombok提供的@EqualsAndHashCode完美的解决了手写equals和hashCode方法时遇到的全部问题,不需要刻意关注底层的实现细节

    @EqualsAndHashCode(exclude = { "age", "job" }, doNotUseGetters = true)  class Staff  {  private String name;  private int age;  private String job;  private Object info;  }  @EqualsAndHashCode(callSuper = false)  class Student extends Staff  {  private String schoolName;  private int classNo;  }  

@Getter和@Setter

通过这两个注解,可以灵活控制是否为字段提供getter/settere方法,以及getter/setter方法的访问权限。由于使用非常简单,以后就不用看到一大堆的get set 啰。

    class Person{  @Getter  @Setter  private String name;  @Getter  private String schoolName;  @Setter  private int classNo;  @Getter(AccessLevel.MODULE)  private int age;  @Getter(AccessLevel.NONE)  private String job;  @Getter(AccessLevel.PRIVATE)  private Object info;  }  

Lombok pojo类小神器相关推荐

  1. java lombok 视频_Java开发神器Lombok使用详解

    最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...

  2. c++趣味小程序_工具类小程序10天增长103万全复盘

    本文目录: 一.100万小程序用户意味着什么 二.为什么要选择春节期间做增长 三."己亥计划"全复盘 四.活动总结及可复用经验 一.100万小程序用户意味着什么 或许对于很多公司的 ...

  3. pojo类无法注入service解决示例

    From:  https://blog.csdn.net/danielzhou888/article/details/83351913 本示例解决springboot中service无法注入普通jop ...

  4. 利用Idea中Gson插件快速编辑POJO类

    利用Idea中Gson插件快速编辑POJO类 (1)需求说明 现在有一个hashmap,想写一个POJO类实现它所有字段的get.set方法,当hashmap中字段较多的时候,过程会变成很繁琐的体力活 ...

  5. POJO 类中布尔类型为啥不让用 isXxx 命名

    一.代码问题重现 想要使用json串在服务间传递信息时,我们会先定义一个POJO类,该类中包含是否删除属性isDeleted,代码如下 /** * @author wenxuan wang */ @D ...

  6. 电商类小程序开发审核及其他注意事项

    一.电商类小程序需要什么资质? 1.总的来说任何微信小程序所涉及的服务不超过5类,在单月内允许有三次的修改.资质方面的要求很严格,如果该小程序具有A类目的资质,但却具有B类目的服务,那么这样跨界的情况 ...

  7. PerfDog 测试腾讯视频、优酷、爱奇艺视频类小程序性能

    自从经朋友介绍PerfDog这款移动端测试神器后就一直在使用它测试大型游戏的流程度,前两天使用腾讯视频追剧分享到微信时发现发现的链接直接进入腾讯视频的小程序中,试了多个视频软件皆是如此,于是想要试试用 ...

  8. 微信背单词类小程序,小鸡单词源码下载,打卡微信小程序

    微信背单词类小程序,小鸡单词源码下载,微信小程序开发学习案例,小程序开发教程.一个用来背单词每天打卡的微信小程序,还有词汇测试,包含多种词库后台由腾讯云wafer解决方案. 前段时间开始学做微信小程序 ...

  9. 天天有毒_鸡汤文案类小程序源码

    简介: 天天有毒_鸡汤文案类小程序源码 网盘下载地址: http://kekewl.net/oi8WRaw46rq0 图片:

最新文章

  1. 如何做中文文本的情感分析?
  2. php面向对象实践,【技术产品】PHP中的面向对象实践-基本实践案例
  3. 计算属性|| 计算属性与方法的区别:计算属性是基于它们的依赖进行缓存的 ;方法不存在缓存||侦听器
  4. 从零开始单排学设计模式「UML类图」定级赛 1
  5. 解决 No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi 的问题
  6. 汇编烧程序进单片机要什么软件_单片机编程语言及应用技巧解析
  7. 有些窗口底部被任务栏挡住了_开始使用 Tint2 吧,一款 Linux 中的开源任务栏
  8. android input出现一个多余文本窗口 解决办法
  9. 【BZOJ3295】动态逆序对,CDQ分治/BIT套权值线段树
  10. android上拉刷新下拉加载
  11. mysql主从复制服务器配置
  12. How to Install MariaDB 10 on CentOS 6.7
  13. 一个老测试给想入行测试行业新人的二十条建议
  14. 全向轮机器人运动模型及应用分析
  15. 第四(装饰器、迭代器、生成器)
  16. 《学生信息管理系统》论文
  17. 字体字号磅数大小对照表
  18. wps表格的宏被禁用问题
  19. 信息系统项目管理师(软考高项)
  20. 超好玩的css3-3d效果

热门文章

  1. java垃圾回收算法超详细全解
  2. 在Flutter中解析复杂的JSON(一篇顶十篇)
  3. 2021年河北高考生成绩排名查询,2021年河北高考成绩查询网站查分网址:http://www.hebeea.edu.cn/...
  4. 神策 2021 数据驱动大会,科特勒、桑文锋等发出营销未来之强音
  5. MySQL索引优化实战
  6. 人工智能缺陷与误觉:让机器产生幻觉的「怪异事件」 1
  7. 邬贺铨:区块链技术将确保物联网隐私和安全
  8. 干货!不得不知的UI界面中“行为召唤按钮”设计秘诀
  9. 竞品调研时发现的Android新设计特性
  10. ngui 输入事件处理