Lombok----详解

Lombok简介

Lombok(Project Lombok)是一个用于 Java 编程语言的开源库,旨在减少 Java 代码中的冗余和样板代码,提高开发人员的生产力。它通过使用注解来自动生成 Java 类的常见方法和代码,从而使开发人员能够编写更简洁、更具可读性和更易维护的代码。Lombok 的主要目标是简化 Java 开发,减少样板代码,使代码更加精炼,从而提高开发效率。

Lombok插件安装

如果IDEA版本在2020.3以上,不需要安装Lombok插件。如果IDEA 版本在2020.3以下,需要安装Lombok插件,安装方法如下:
Lombok----详解_第1张图片

Lombok依赖

1.maven项目引入

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
    <scope>provided</scope>
</dependency>

2.sprinboot项目引入

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

Lombok注解_ @Setter @Getter @ToString

//给类下的所有属性添加Setter/Getter
@Setter
@Getter
@ToString(exclude={password})
public class User {
    //给id属性添加Setter
    @Setter
    private Integer id;
    //给username的setter方法设置私有权限
    @Setter(AccessLevel.PRIVATE)
    private String username;
    //取消password的Getter方法
    @Getter(AccessLevel.NONE)
    private String password;
    private static int age;
    private final String address = null;
}

exclude:取消某一个或多个变量在toString方法中的显示
注: 1、static修饰的变量不生成getter和setter方法 2、final修饰的变量只生成getter方法

Lombok注解_ @EqualsAndHashCode

判断两个对象是否相等

在Java中,调用equals()可以判断两个对象是否相等。如果类不重写 该方法,则判断两个引用是否指向同一个对象。

如何重写equals():

1、判断两个引用是否指向同一对象

2、判断引用是否为Null

3、判断两个对象的实际类型是否相等,此时需要调用canEqual()

4、判断两个对象的属性是否相等

而在Set中判断对象是否重复,在调用equals()之前,需要先调用 hashCode()计算hash值。所以判断对象相等需要重写equals()、 canEqual()、hashCode()三个方法。

@Setter
@Getter
@ToString
//@EqualsAndHashCode(exclude = {"password"})
//排除password,只使用id,username对比及计算hash
@EqualsAndHashCode(of = {"username"})
//只使用username对比及计算hash
public class User3 {
    private Integer id;
    private String username;
    private String password;
}

属性:

1、exclude: 比较时排除一些属性
2、of: 比较时只使用一些属性

注意:
1、对比时只使用非静态属性
2、默认仅使用该类定义的属性不比较父类定义的属性

Lombok注解_@NotNull

作用:用于方法参数前,表示调用该方法时参数不能为null;用于 属性上方,表示为该属性赋值时值不能为null。

位置:方法参数前或属性上方。

Lombok注解_@NoArgsConstructor

作用:生成无参构造方法

位置:类上方

Lombok注解_@RequiredArgsConstructor

作用:生成包含final和@NonNull修饰的属性的构造方法

位置:类上方

Lombok注解_@AllArgsConstructor

作用:生成全参的构造方法

位置:类上方

Lombok注解_@Data

作用:相当于同时添加@Setter、@Getter、@ToString、 @EqualsAndHashCode、 @RequiredArgsConstructor五个注解

位置:类上方

Lombok注解_@Builder

作用:提供链式风格创建对象

位置:类上方

Lombok注解_@Log

作用:在类中生成日志对象,在方法中可以直接使用

位置:类上方

Lombok注解_@Cleanup

作用:自动关闭资源,如IO流对象。

位置:代码前方

public class JingTian {
	public static void main(String[] args) {
		@Cleanup Scanner scanner = new Scanner(System.in);
		try {
			@Cleanup Reader reader = new FileReader(new File(""));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Lombok注解_@SneakyThrows

作用:对方法中异常进行捕捉并抛出

位置:方法上方

你可能感兴趣的:(java,#,基础,java)