欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lombok安装,原理及教程,nice!!!

程序员文章站 2022-10-18 18:20:03
面对工作中大量重复的,毫无技术含量 get()、set()方法,你是不是抱怨过?那你听说过 Lombok 吗?那你知道 Lombok 还有哪些鲜为人知的秘密吗?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 ag.....

Lombok安装,原理及教程,nice!!!

面对工作中大量重复的,毫无技术含量 get()、set()方法,你是不是抱怨过?
那你听说过 Lombok 吗?
那你知道 Lombok 还有哪些鲜为人知的秘密吗?

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.

翻译

Lombok 项目是一个 Java 库,它会自动插入您的编辑器和构建工具中,从而使您的 Java 更加生动有趣。永远不要再写另一个 getter 或 equals 方法,通过注解您的类有一个功能全面的生成器,自动化您的日志记录变量等等。

示例

用@Data 代替所有成员的 getter,setter 方法,用@ToString 代替 toString 方法。

@ToString
@Data
public class Account implements Serializable {
private Integer id;
private Integer uid;
private Double money;
private User user;
}

Lombok 原理

JSR 269:插件化注解处理 API(Pluggable Annotation Processing API)

官网地址,感兴趣的小伙伴可以去看看

原理图流程如下:

Lombok安装,原理及教程,nice!!!

Lombok 安装

  • javac
    • 拷贝 jar 到类路径
    • javac -cp lombok.jar …
  • Maven
    • pom 引入依赖
 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
 </dependency>
  • Intellij IDEA
    • 安装 Lombok 插件

Lombok安装,原理及教程,nice!!!

安装完成后,可以在 Structure可以在 View -> Tool Windows -> Structure 或者 Alt +7中看到下图即安装成功:

Lombok安装,原理及教程,nice!!!

Lombok 常用注解

Lombok安装,原理及教程,nice!!!

@Getter 和@Setter

可以放在成员上或者类上来生成 getter 和 setter 方法只对成员变量起作用,对于类变量不起作用,final 类型常量只有 getter 方法

@Getter(AccessLevel.PROTECTED)这个就是将 getter 方法的类型修饰符变为 protected

@Getter(AccessLevel.NONE)这个就是某些成员不想添加 getter 方法可以不添加.

@ToString
@Getter
public class Account implements Serializable {
	private static final long serialVersionUID = 7063222791609347900L;
	private Integer id;
	private Integer uid;
	private Double money;
	@Getter(AccessLevel.NONE)
	private User user;
}

toString

功能:打印对象字符串

  • @ToString(exclude = ("money")) 打印的时候将 money 字段排除在外

  • @ToString(of =("成员变量或者静态变量") ) 打印时只输出 of 里边的变量。

@EqualsAndHashCode

Lombok安装,原理及教程,nice!!!

@EqualsAndHashCode (exclude = ("money"))在生成的 equals,canEqual,hashCode 方法中不会出现 money 变量的比较。

@NonNull

帮助我们省掉一些判断是否为空的代码

public void test(@NonNull String s){
		System.out.println(s);
	}
  @Test
	public void test1(){
		new Account().test(null);
}
结果:
java.lang.NullPointerException: s is marked non-null but is null

@NoArgConstructor 和@RequiredArgsConstructor 和@AllArgConstructor

@NoArgConstructor无参构造器@RequiredArgsConstructor(未赋值的 final 常量,加入@NonNull 的成员变量)@AllArgConstructor`全参构造区

@Data

集成了

  1. @Getter/@Setter
  2. @ToString
  3. @EqualsAndHashCode
  4. @NonNull
  5. @RequiredArgsConstructor

@Builder

@Builder 类似于函数式编程,假如以后会生成

Lombok安装,原理及教程,nice!!!

在你需要赋值的时候,你可以

@Data
@Builder
public class Account implements Serializable {
	private Integer id;
	private Integer uid;
	private Double money;
 	@Test
	public void test1(){
		Account account = Account.builder().id(1).uid(2).money(2.0).build();
		System.out.println(account);
	}
}

@Log

输出日志

Lombok安装,原理及教程,nice!!!

val

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

我们可以在定义的时候一律用val代替

@Cleanup

比如最常见的 InputStream 流每次打开后都要关闭,我们可以在

@Cleanup Inputstream in = new FileInputStream("filepath");

这样我们可以省去关闭流的麻烦

OVER!如果这篇文章对你有帮助的话,不胜感激!!!

Lombok安装,原理及教程,nice!!!

Lombok安装,原理及教程,nice!!!

本文地址:https://blog.csdn.net/qq_43688587/article/details/107391678