Lombok-懒人必备工具

本篇文章目标

了解Lombok、安装Lombok、使用Lombok

前置技能:IDEA、Maven

1. 了解Lombok

官网解释

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

提取关键词:Java 库、自动插件、提高效率、再也不编写get、equals等方法、使用注解

1.1 初识

使用Lombok前:需要手动生成get/set/equals/hashCode/toString方法

使用后效果:加注解,减少代码冗余

2. Lombok原理

Java规范:JSR 269(Java Specification Requests)    插件化注解处理API(Pluggable Annotation Processing API)

JDK6提供的特性,在 Javac编译期(SOURCE标识)利用注解,在字节码文件中生成get、set等方法

Java编译器执行过程:

查看编译后的字节码文件:

![在这里插入图片描述](https://img-blog.csdnimg.cn/34692b34b1bd43c2bb67a10eec18b284.png#pic_center)

3. Lombok安装

3.1 在Maven的pom.xml中添加依赖

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

 3.2 IDEA安装插件

File-->Settings-->Plugins(插件)-->Marketplace-->搜索Lombok-->Install-->Apply-->重启IDEA

4. Lombok注解

4.1 @Getter/@Setter

1. 可以为单个成员变量设置get方法

2. 可以为所有成员变量设置get、set方法 。同时可以为某个成员变量设置其他权限(默认public)、或设置取消get/set方法

3. 无法为static设置get/set方法,只为final类型设置get方法

 4.2 @ToString

ToString只能加在类上,自动生成ToString方法,使用exclude排除多个字段,of必须包含哪些字段。

@ToString(exclude = {"字段1","字段2"} ,of = {"",""})
 
 

4.3 @EqualsAndHashCode

生成equals方法、canEqual(判断是否属于Car类)、hashCode方法。也可以进行相等比较的排除,指定。

@EqualsAndHashCode(exclude = {"字段1","字段2"})
 
 

4.4 @NonNull

可以加在成员变量前,也可以加在方法参数前。用来指定某个字段不能为空

4.5 构造器注解

@NoArgsConstructor:无参构造器
@RequiredArgsConstructor:生成指定类型(final@NonNull@AllArgsConstructor:所有参数构造器

4.6 @Data

集成@Getter/@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor

4.7 @Builder

使用此注解进行对象的构建,函数式编程/链式编程,省去逐行字段set。

CarLombok build = CarLombok.builder().id(1).type("string").price(88.8).level('a').build();
System.out.println(build.toString());

4.8 @Log

支持Log4j、Slf4j,日志功能

public static void main(String[] args) {
    CarLombok build = CarLombok.builder().id(1).type("string").price(88.8).level('a').build();
    System.out.println(build.toString());
    build.logTest("input");
    }
public void logTest(String test){
    log.info("test function");
    System.out.println(test);
    }

输出信息

CarLombok(age=3, id=1, type=string, price=88.8, level=a)
一月 11, 2021 11:39:07 下午 org.example.CarLombok logTest
信息: test function
input

4.9 val

类比JS中的val(弱引用类型),在编译阶段确定类型,简化操作

使用  val map = new HashMap<String, String>();

替换  Map<String, String> map = new HashMap<>();

4.10  @Cleanup

对资源流进行清理

@Cleanup InputStream in = new FileInputStream("filepath");
@Cleanup OutputStream out = new FileOutputStream("filepath2");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值