lombok基本使用

lombok简介

官网:https://projectlombok.org

lombok是项目中最常用的插件之一,是简化开发的重要工具,常用于POJO类上,自动生成Setter/Getter、空参与全参构造器、流式set等。
常用的注解有 @Getter 、@Setter 、@RequiredArgsConstructor、 @ToString 、@EqualsAndHashCode、@Data、@AllArgsConstructor、@NoArgsConstructor、@Builder。
常用组合为@AllArgsConstructor、@NoArgsConstructor、@Builder与@Data。

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User {private String id;// ...
}

idea安装lombok插件

pom.xml

   <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency>

@Setter

  • 自动产生 setter
  • static 与 final 修饰的无法生成对应的Set方法
import lombok.Getter;
/*** @author comlong* @create 2021-07-11 15:38* @Description 自动产生 setter* static 与 final 修饰的无法生成对应的Set方法*/
@Setter
public class SetterInfo {/*** 以下6个均可生成对应的Set方法*/public String puString;String string;protected int proInt;private Integer priInt;private char priChar;transient int tiInt;/*** 以下均不能生成对应的Set方法*/final int inum = 100;final char ch = 'c';final String fString = "fString";final transient int ftiInt = 1020;static int num;static String sStr;static transient int siInt;static final String sfString = "sfString";static final int sfi = 1;static final transient String sftStr = "sftStr";}

@Getter

  • 自动产生 getter
  • static 修饰的无法生产对应的Get方法
import lombok.Getter;
/*** @author comlong* @create 2021-07-11 15:50* @Description 自动产生 getter* static 修饰的无法生产对应的Get方法*/
@Getter
public class GetterInfo {/*** 以下10个均可生成对应的Get方法*/public String puString;String string;protected int proInt;private Integer priInt;private char priChar;transient int tiInt;final int inum = 100;final char ch = 'c';final String fString = "fString";final transient int ftiInt = 1020;/*** 以下均不能生成对应的Get方法*/static int num;static String sStr;static transient int siInt;static final String sfString = "sfString";static final int sfi = 1;static final transient String sftStr = "sftStr";}

@NoArgsConstructor

  • 自动生成空参构造器
import lombok.NoArgsConstructor;/*** @author comlong* @create 2021-07-11 16:35* @Description 添加空参构造器*/
@NoArgsConstructor
public class NoArgsConstructorInfo {}

@AllArgsConstructor

  • 生成一个包含所有参数的构造器,不包括static、final修饰的变量
import lombok.AllArgsConstructor;/*** @author comlong* @create 2021-07-11 16:38* @Description 生成一个包含所有参数的构造器,不包括static、final修饰的变量*/
@AllArgsConstructor
public class AllArgsConstructorInfo {/***  以下6个变量构成了 有参构造器*/public String puString;String string;protected int proInt;private Integer priInt;private char priChar;transient int tiInt;/*** 以下不会在有参构造器中出现*/final int inum = 100;final char ch = 'c';final String fString = "fString";final transient int ftiInt = 1020;static int num;static String sStr;static transient int siInt;static final String sfString = "sfString";static final int sfi = 1;static final transient String sftStr = "sftStr";/*** *  public AllArgsConstructorInfo(String puString, String string, int proInt, Integer priInt, char priChar, int tiInt) {*         this.puString = puString;*         this.string = string;*         this.proInt = proInt;*         this.priInt = priInt;*         this.priChar = priChar;*         this.tiInt = tiInt;*     }*/}

@RequiredArgsConstructor

  • 生成 一个构造器,构造器的参数列中只包含 final 修饰的且没有赋予初始值的变量。
import lombok.RequiredArgsConstructor;/*** @author comlong* @create 2021-07-11 16:44* @Description 生成 一个构造器,构造器的参数列中只包含 final 修饰的且没有赋予初始值的变量。*/
@RequiredArgsConstructor
public class RequiredArgsConstructorInfo {/*** 以下4个会生成在有参构造器中*/final int inum;final char ch;final String fString;final transient int ftiInt;/**//如果赋予了初始值,则不会生成在构造器中final int inum = 100;final char ch = 'c';final String fString = "fString";final transient int ftiInt = 1020;
*//*** 以下均不会生成在有参构造器中*/public String puString;String string;protected int proInt;private Integer priInt;private char priChar;transient int tiInt;static int num;static String sStr;static transient int siInt;static final String sfString = "sfString";static final int sfi = 1;static final transient String sftStr = "sftStr";/***  public RequiredArgsConstructorInfo(int inum, char ch, String fString, int ftiInt) {*         this.inum = inum;*         this.ch = ch;*         this.fString = fString;*         this.ftiInt = ftiInt;*     }*/
}

@ToString

  • 自动重写 toString() 方法
  • static修饰的内容无法重写在toString()中
import lombok.ToString;/*** @author comlong* @create 2021-07-11 16:00* @Description  自动重写 toString() 方法* @ToString static修饰的内容无法在toString打印。*/
@ToString
public class ToStringInfo {/*** 以下10个均可生成在toString()方法*/public String puString;String string;protected int proInt;private Integer priInt;private char priChar;transient int tiInt;final int inum = 100;final char ch = 'c';final String fString = "fString";final transient int ftiInt = 1020;/*** 以下均不能生成在toString()方法*/static int num;static String sStr;static transient int siInt;static final String sfString = "sfString";static final int sfi = 1;static final transient String sftStr = "sftStr";/*** ToStringInfo(puString=null, string=null, proInt=0, priInt=null, priChar= , inum=0, ch= , fString=fString)* *  public String toString() {*         StringBuilder var10000 = (new StringBuilder()).append("ToStringInfo(puString=").append(this.puString).append(", string=").append(this.string).append(", proInt=").append(this.proInt).append(", priInt=").append(this.priInt).append(", priChar=").append(this.priChar).append(", tiInt=").append(this.tiInt).append(", inum=");*         this.getClass();*         var10000 = var10000.append(100).append(", ch=");*         this.getClass();*         var10000 = var10000.append('c').append(", fString=");*         this.getClass();*         var10000 = var10000.append("fString").append(", ftiInt=");*         this.getClass();*         return var10000.append(1020).append(")").toString();*     }*/}

@Value

  • 将非final、未赋予初始化值的变量添加上final修饰符
  • 生成 一个构造器,构造器的参数列中只包含 final 修饰的且没有赋予初始值的变量。
import lombok.Value;/*** @author comlong* @create 2021-07-11 16:59* @Description 将非final、未赋予初始化值的变量添加上final修饰符* 生成 一个构造器,构造器的参数列中只包含 final 修饰的且没有赋予初始值的变量。*/
@Value
public class ValueInfo {/*** 以下10个字段会生成有参构造器*/public String puString;String string;protected int proInt;private Integer priInt;private char priChar;transient int tiInt;private final int inum;private final char ch;final String fString;protected final transient int ftiInt;// 以下不在生成有参构造器的参数列表中/**// 赋予了初始值,则不在生成有参构造器的参数列表中private Integer priInt = 10;protected int proInt = 100;final int inum = 100;final char ch = 'c';final String fString = "fString";final transient int ftiInt = 1020;*/static int num;static String sStr;static transient int siInt;static final String sfString = "sfString";static final int sfi = 1;static final transient String sftStr = "sftStr";/*** public ValueInfo(String puString, String string, int proInt, Integer priInt, char priChar, int tiInt, int inum, char ch, String fString, int ftiInt) {*         this.puString = puString;*         this.string = string;*         this.proInt = proInt;*         this.priInt = priInt;*         this.priChar = priChar;*         this.tiInt = tiInt;*         this.inum = inum;*         this.ch = ch;*         this.fString = fString;*         this.ftiInt = ftiInt;*     }*/}

@EqualsAndHashCode

  • 自动生成 equals(Object other) 和 hashcode() 方法
  • 包括所有非静态变量和非 transient 的变量
  • 可以使用@EqualsAndHashCode(exclude = “excludeFiled” ) 排除某些字段

@Data

  • 相当于 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode
  • 经常与 @AllArgsConstructor、@NoArgsConstructor、@Builder一起使用

@Builder

@Builder 让您自动生成使您的类可以使用以下代码实例化所需的代码:

Person.builder().name("Adam Savage").city("San Francisco").job("Mythbusters").job("Unchained Reaction").build();

@Log,@Slf4j

标注于class上,然后就会有一个静态 final log字段,按照您使用的日志记录框架的常用规定方式进行初始化,然后您可以使用它来编写日志语句。

使用 @Log等同于在class中写了这个:

private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());

使用:


import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;@Log
public class LogExample {public static void main(String... args) {log.severe("Something's wrong here");}
}@Slf4j
public class LogExampleOther {public static void main(String... args) {log.error("Something else is wrong here");}
}

lombok基本使用相关推荐

  1. java if (name!=null name!=),命名不规范,lombok泪两行!

    序言 去年在项目当中引入了Lombok插件,着实解放了双手,代替了一些重复的简单工作(Getter,Setter,toString等方法的编写). 但是,在使用的过程当中,也发现了一些坑,开始的时候并 ...

  2. 【java】Lombok的使用

    介绍:lombok在编译entity文件时自动生成get set toString hashCode等方法,这样方法生成就不用写在代码里了,可以简化代码. 使用方法: 一.在pom文件里引入lombo ...

  3. 40.lombok在IntelliJ IDEA下的使用

    转自:https://www.cnblogs.com/yjmyzz/p/lombok-with-intellij-idea.html lombok是一款可以精减java代码.提升开发人员生产效率的辅助 ...

  4. eclipse集成lombok

    个人资源免费分享网站:http://xiaocaoshare.com/ 进入lombok.jar所在目录,执行java -jar lombok.jar命令 选择要集成的ide 点击Install / ...

  5. elcipse 安装lombok插件解决 @Slf4j 等找不到log变量问题

    1.前往官网下载:https://projectlombok.org/download  lombok.jar  2.将lombok.jar放在eclipse的安装目录下. 3.在eclipse的安装 ...

  6. 代码洁癖的春天!Java 效率工具之 Lombok

    点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取学习资料 还在编写无聊枯燥又难以维护的PO ...

  7. Lombok!代码简洁神器还是代码“亚健康”元凶?

    以下文章来源方志朋的博客,回复"666"获面试宝典 关于Lombok,DD是一个重度用户,从我编写的Spring Boot教程还是Spring Cloud教程中,都可以看到几乎每个 ...

  8. 我要狠狠的反驳“公司禁止使用Lombok”的观点

    点击关注公众号,Java干货及时送达 来源:toutiao.com/i6884399145390440964 经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章 ...

  9. 好家伙!JDK16 GA 终于发布,内置 Lombok 的功能,真的顶?

    就在昨天,JDK16 GA正式发布: 2020/12/10  Rampdown Phase One (fork from main line) 2021/01/14  Rampdown Phase T ...

  10. Lombok经常用,却不知道它的原理是什么

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://urlify.cn/y2UnAn ...

最新文章

  1. python饼状图颜色一样_Python饼状图的绘制实例
  2. 二级域名做SEO优化有怎样的利弊关系?
  3. 082_html5Web存储
  4. vc6.0连接mysql数据库
  5. 汇编工具安装三:已经配置好的汇编开发工具!
  6. 九度OJ 1054:字符串内排序
  7. 推荐:全网最全的Java并发面试题及答案。
  8. kafka manager 2.0 工具下载 已打包完成
  9. RAC环境创建本地数据文件的解决方法
  10. #JS 窗口resize避免触发多次
  11. easyui-datagrid对行写样式
  12. 智能门锁电路图_智能门锁工作原理分析及智能门锁基本工作流程技术原理介绍...
  13. vs插件supercharger注册码
  14. 生物信息预测毒力因子
  15. PHP安装ioncube扩展
  16. 多平台聚合关键字搜索
  17. Oracle12C日志出现error=904怎样解决
  18. alienware17R5折腾记
  19. 冲大厂:Java并发六十问,快来看看你会多少道
  20. python gevent pool_python 协程编程之gevent

热门文章

  1. 小米10开始抓取日志怎么关闭_小米10手机降价,原因原来在这里
  2. UE4 C++入门之路4-PostInitProperties函数详解(设置属性默认值的四种方法)
  3. 最佳实践 · 有人4G DTU接入 MODBUS 物联网平台
  4. 方舟上的李德磊--记方舟科技董事长兼总裁李德磊校友
  5. RAC的GES/GCS原理
  6. 电子书——人类进步的电梯
  7. 《深入理解Android内核设计思想》已陆续在全国各大书店及网上书店上市,感谢大家一直以来的支持~~
  8. 计算机等设备管理制度,计算机设备管理制度范本..doc
  9. 课题十 加工中心的编程技巧
  10. win7:windows time服务问题,自启及配置