lombok基本使用
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基本使用相关推荐
- java if (name!=null name!=),命名不规范,lombok泪两行!
序言 去年在项目当中引入了Lombok插件,着实解放了双手,代替了一些重复的简单工作(Getter,Setter,toString等方法的编写). 但是,在使用的过程当中,也发现了一些坑,开始的时候并 ...
- 【java】Lombok的使用
介绍:lombok在编译entity文件时自动生成get set toString hashCode等方法,这样方法生成就不用写在代码里了,可以简化代码. 使用方法: 一.在pom文件里引入lombo ...
- 40.lombok在IntelliJ IDEA下的使用
转自:https://www.cnblogs.com/yjmyzz/p/lombok-with-intellij-idea.html lombok是一款可以精减java代码.提升开发人员生产效率的辅助 ...
- eclipse集成lombok
个人资源免费分享网站:http://xiaocaoshare.com/ 进入lombok.jar所在目录,执行java -jar lombok.jar命令 选择要集成的ide 点击Install / ...
- elcipse 安装lombok插件解决 @Slf4j 等找不到log变量问题
1.前往官网下载:https://projectlombok.org/download lombok.jar 2.将lombok.jar放在eclipse的安装目录下. 3.在eclipse的安装 ...
- 代码洁癖的春天!Java 效率工具之 Lombok
点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取学习资料 还在编写无聊枯燥又难以维护的PO ...
- Lombok!代码简洁神器还是代码“亚健康”元凶?
以下文章来源方志朋的博客,回复"666"获面试宝典 关于Lombok,DD是一个重度用户,从我编写的Spring Boot教程还是Spring Cloud教程中,都可以看到几乎每个 ...
- 我要狠狠的反驳“公司禁止使用Lombok”的观点
点击关注公众号,Java干货及时送达 来源:toutiao.com/i6884399145390440964 经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章 ...
- 好家伙!JDK16 GA 终于发布,内置 Lombok 的功能,真的顶?
就在昨天,JDK16 GA正式发布: 2020/12/10 Rampdown Phase One (fork from main line) 2021/01/14 Rampdown Phase T ...
- Lombok经常用,却不知道它的原理是什么
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://urlify.cn/y2UnAn ...
最新文章
- python饼状图颜色一样_Python饼状图的绘制实例
- 二级域名做SEO优化有怎样的利弊关系?
- 082_html5Web存储
- vc6.0连接mysql数据库
- 汇编工具安装三:已经配置好的汇编开发工具!
- 九度OJ 1054:字符串内排序
- 推荐:全网最全的Java并发面试题及答案。
- kafka manager 2.0 工具下载 已打包完成
- RAC环境创建本地数据文件的解决方法
- #JS 窗口resize避免触发多次
- easyui-datagrid对行写样式
- 智能门锁电路图_智能门锁工作原理分析及智能门锁基本工作流程技术原理介绍...
- vs插件supercharger注册码
- 生物信息预测毒力因子
- PHP安装ioncube扩展
- 多平台聚合关键字搜索
- Oracle12C日志出现error=904怎样解决
- alienware17R5折腾记
- 冲大厂:Java并发六十问,快来看看你会多少道
- python gevent pool_python 协程编程之gevent
热门文章
- 小米10开始抓取日志怎么关闭_小米10手机降价,原因原来在这里
- UE4 C++入门之路4-PostInitProperties函数详解(设置属性默认值的四种方法)
- 最佳实践 · 有人4G DTU接入 MODBUS 物联网平台
- 方舟上的李德磊--记方舟科技董事长兼总裁李德磊校友
- RAC的GES/GCS原理
- 电子书——人类进步的电梯
- 《深入理解Android内核设计思想》已陆续在全国各大书店及网上书店上市,感谢大家一直以来的支持~~
- 计算机等设备管理制度,计算机设备管理制度范本..doc
- 课题十 加工中心的编程技巧
- win7:windows time服务问题,自启及配置