前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

LomBok

作者头像
名字是乱打的
发布2021-12-23 17:45:29
4240
发布2021-12-23 17:45:29
举报
文章被收录于专栏:软件工程软件工程

我只取我需要关注的,或者说我要打笔记的点,灵感动机来自于刚到公司接触的项目让我初识LomBok.LomBok官方文档可以点击这里

一.LomBok是啥?

我认为lombok的主要作用有两点,1.简化代码 2.提高代码可读性 表层原因是消除千篇一律的无用代码,至于哪些代码,可以往下看.

二 .LomBok怎么用,哪里可以用?

先看怎么用再看为什么.

LomBok用到的注解👇
  • 标注在类上表示所有的非静态字段都会生成相应的getter/setter方法
  • 标注在字段上表示只为这个字段生成,且会覆盖标注在类上的注解
  • 可设置访问级别,默认为public
  • @Setter不可以标注final字段

@NonNull注解标注方法和构造器的参数(用在参数前,eg: (@NonNull String id)),如果参数为null,则会抛出空指针异常,或者用于变量上,不需要在代码中进行null检测

@ToString注解用于类上生成toString()方法

  • @ToString.Exclude 标注属性值不包含在toString()方法中
  • @ToString.Include标注属性值包含在toString()方法中 @ToString.Exclude private String age;

  • @EqualsAndHashCode注解用于类上生成equals()和hashcode()方法,注解的属性和@ToString类似

用于类上生成一个无参数的构造方法,变量需要用final修饰

自动生成无参数构造函数。

自动生成全参数构造函数。

自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字 段添加@Setter,和@RequiredArgsConstructor,对于POJO类十分有用

@Value注解为不可变类型的@Data,是@Data的一个变种。只提供getter方法,而不提供setter方法.它标注的类和字段都会被声明为final

@Builder注解为类生成builder api以供调用。Builder是一种解决包含数量巨大且繁杂的字段的类的一种构建方式。

@Log注解为类添加一个日志对象log,类型为java.util.logging.Logger

@CleanUp注解用于关闭资源,调用资源的close()方法,有点逆天啊

自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流

害~上面的注解,咱也就用到了几个常用的@data @AllArgsConstructor

看了咋用的后,再看为什么

Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:

    1. javac对源代码进行分析,生成了一棵抽象语法树(AST)
    1. 运行过程中调用实现了“JSR 269 API”的Lombok程序
    1. 此时Lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的>语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点
    1. javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)

看起来有点像大学时候学的编译原理,简单说就是编译时候,响应的注解相当于一个标识,lombok程序会启动并对之前的源码种的标识进行处理生成一些支撑代码(我们之前省略的大量代码),运行的时候省略的代码相当于已经补上了,那么自然跟我们之前全部写了效果等同.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/2 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.LomBok是啥?
    • 二 .LomBok怎么用,哪里可以用?
      • LomBok用到的注解👇
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档