网站的优势与不足,龙华区住房和建设局网站官网,苏州做网站优化,杭州外贸公司有哪些一、Lombok介绍
Lombok是一个Java库#xff0c;可以通过注解来简化Java类的编写#xff0c;减少冗余的样板代码。它提供了一系列的注解#xff0c;用于自动生成常见的代码#xff0c;如getter和setter方法、构造函数、equals和hashCode方法、toString方法等。通过使用Lomb…一、Lombok介绍
Lombok是一个Java库可以通过注解来简化Java类的编写减少冗余的样板代码。它提供了一系列的注解用于自动生成常见的代码如getter和setter方法、构造函数、equals和hashCode方法、toString方法等。通过使用Lombok开发者可以更加专注于业务逻辑的实现减少了繁琐的重复劳动。 二、Lombok常用注解 2.1 Getter/Setter
Getter和Setter注解是Lombok库的一部分它们会自动为你的类生成getter和setter方法。这些方法通常用于访问类的私有字段。可以添加在类上或者方法上。
这是如何使用这些注解的一些基本示例
import lombok.Getter;
import lombok.Setter;Getter
Setter
public class User {private String name;private int age;private String password;}
AccessLevel是Lombok中的一个属性用于指定生成的getter、setter方法的访问级别。
AccessLevel有三个可选值
AccessLevel.PUBLIC生成public访问级别的getter方法。AccessLevel.PROTECTED生成protected访问级别的getter方法。AccessLevel.NONE不生成getter方法属性保持私有无法从外部访问。 上面的基本示例代码如果希望外部不能操作password属性即可使用AccessLevel属性 import lombok.Getter;
import lombok.Setter;Getter
Setter
public class User {private String name;private int age;Getter(AccessLevel.NONE)Setter(AccessLevel.NONE)private String password;
} 2.2 ToString
ToString是Lombok库中的一个注解用于自动生成toString方法。通过在类上添加ToString注解Lombok将根据类的字段生成一个toString方法返回一个包含类名和字段值的字符串。
下面是一个使用ToString注解的示例
import lombok.ToString;ToString
public class Person {private String name;private int age;
} 在这个示例中Lombok会自动生成一个toString方法如下所示
public String toString() {return Person(name this.getName() , age this.getAge() );
} 2.3 EqualsAndHashCode
EqualsAndHashCode是Lombok库中的一个注解它自动生成equals()和hashCode()方法。当你在类上添加EqualsAndHashCode注解后Lombok会根据类的字段生成相应的equals()和hashCode()方法。
equals()方法用于比较两个对象是否相等而hashCode()方法返回对象的哈希码值。在Java中这两个方法是Object类的一部分用于支持对象比较和散列操作。
以下是一个使用EqualsAndHashCode注解的示例
import lombok.EqualsAndHashCode;EqualsAndHashCode
public class Person {private String name;private int age;
}
Lombok将根据这个类的字段生成以下equals()和hashCode()方法
Override
public boolean equals(Object obj) {if (this obj) return true;if (obj null || getClass() ! obj.getClass()) return false;Person person (Person) obj;return age person.age Objects.equals(name, person.name);
}Override
public int hashCode() {return Objects.hash(name, age);
} 2.4 NonNull
NonNull 是 Lombok 库中的一个注解用于指示一个参数、返回值或字段不能为 null。当你在类的方法或字段上使用 NonNull 注解时Lombok 会自动生成校验代码确保该方法或字段在使用前不为 null。
以下是一个使用 NonNull 注解的示例
import lombok.NonNull;public class Example {NonNullprivate String name;public void setName(NonNull String name) {this.name name;}public String getName() {return name;}
}
在上面的示例中name 字段和 setName() 方法都使用了 NonNull 注解。这表示 name 字段不能为 null如果尝试将 null 值赋给 nameLombok 将自动生成校验代码抛出异常。同样setName() 方法也不会允许传入 null 参数。
使用 NonNull 注解可以帮助开发人员避免空指针异常并在编译时检查非空约束。它是一种方便的工具可以提高代码的可读性和健壮性。 2.5 NoArgsConstructor
NoArgsConstructor 是 Lombok 库中的一个注解用于自动生成一个无参构造函数。当你在类上添加 NoArgsConstructor 注解时Lombok 会根据类的字段生成一个无参构造函数。 2.6 RequiredArgsConstructor了解 RequiredArgsConstructor 是 Lombok 库中的一个注解它会自动生成一个包含所有需要特殊处理例如需要使用 final 修饰符或NonNull注解的参数的构造函数。当你在类上添加 RequiredArgsConstructor 注解时Lombok 会根据类的字段生成一个构造函数该构造函数的参数是使用final关键字修饰的参数或使用NonNull注解的参数。 2.7 AllArgsConstructor
AllArgsConstructor 是 Lombok 库中的一个注解用于自动生成一个包含所有字段的构造函数。当你在类上添加 AllArgsConstructor 注解时Lombok 会为该类生成一个包含所有字段的构造函数。这个构造函数会使用参数的名字作为参数的名称。 2.8 Data最常用
Data 是 Lombok 库中的一个注解它为 Java 类自动生成 getter、setter 方法、toString() 方法、equals()、hashCode() 和 和特殊处理使用 final 修饰符或NonNull注解的参数的构造函数。通过在类上添加 Data 注解Lombok 会根据类的字段生成这些方法。
具体来说Data 注解包含以下四个子注解
Getter 和 Setter为类的字段生成 getter 和 setter 方法。ToString为类生成 toString() 方法该方法返回类的实例的字符串表示形式。EqualsAndHashCode为类生成 equals() 和 hashCode() 方法。RequiredArgsConstructor为类生成一个包含所有需要特殊处理使用 final 修饰符或NonNull注解的参数的构造函数。
请注意如果你使用 Data 注解Lombok 会自动生成这些方法而无需手动编写这些代码。
Data
public class User {private String name;private int age;
} 2.9 Builder炫技必备链式编程
Builder 是 Lombok 库中的一个注解用于自动生成一个 builder 类。通过在类上添加 Builder 注解Lombok 会为该类生成一个 builder 类该 builder 类具有用于设置每个字段的 setter 方法以及一个用于创建最终对象的 build() 方法。
使用 Builder 注解可以简化代码并使代码更易于阅读和维护。它使得代码更加清晰明了避免了手动编写 builder 类的繁琐过程。
周式概括在实体类上使用Builder注解后在实体类中会生成一个builder()方法该方法用于return一个对应的builder类(构造器)。在构建器中实体类中的每个参数都会对应创建类似于 setter 的方法方法名与该参数名相同并且返回值是构建器本身便于链式调用。还会提供一个会build 方法return实体类对象。
Builder
public class User {private String username;private String password;
}
编译后
public class User {private String username;private String password;User(String username, String password) {this.username username;this.password password;}public static User.UserBuilder builder() {return new User.UserBuilder();}public static class UserBuilder {private String username;private String password;UserBuilder() {}public User.UserBuilder username(String username) {this.username username;return this;}public User.UserBuilder password(String password) {this.password password;return this;}public User build() {return new User(this.username, this.password);}public String toString() {return User.UserBuilder(username this.username , password this.password );}}
}
1.在实体类中会创建一个 builder 方法它的目的是用来创建构建器
2.创建一个名为 ThisClassBuilder 的内部静态类并具有和实体类相同的属性称为构建器
3.在构建器中对于目标类中的所有的属性和未初始化的 final 字段都会在构建器中创建对应属性
4.在构建器中创建一个无参的 default 构造函数
5.在构建器中实体类中的每个参数都会对应创建类似于 setter 的方法方法名与该参数名相同。 并且返回值是构建器本身便于链式调用
6.在构建器中会创建一个 build 方法调用 build 方法就会根据设置的值进行创建实体对象
7.在构建器中会生成一个 toString 方法
USer user User.builder().username(admin).password(admin).build(); 2.10 Slf4j
Slf4j是Lombok库中的一个注解它可以为Java类自动添加一个名为log的日志记录器。Slf4j注解使用了SLF4JSimple Logging Facade for Java日志框架。通过使用Slf4j注解您无需手动创建private static final Logger log LoggerFactory.getLogger(YourClassName.class)这样的日志记录器而是直接使用log变量进行日志记录。
使用Slf4j注解的示例代码如下所示
import lombok.extern.slf4j.Slf4j;Slf4j
public class MyClass {public void myMethod() {log.debug(Debug log message);log.info(Info log message);log.error(Error log message);}
}
在上述代码中通过使用Slf4j注解即可在MyClass中自动添加一个名为log的日志记录器。然后您可以在方法中使用log变量来记录日志。在示例中使用了不同的日志级别debug、info和error记录不同级别的日志信息。 三、Lombok使用
3.1 引入依赖 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId
/dependency3.2 安装插件第一次使用时
IDEA中File-Settings-Plugins搜索安装Lombok插件。 3.3 在Java类中使用Lombok注解
在Java类中使用Lombok注解您可以在需要简化的Java类中使用Lombok的注解来自动生成代码。以下是一些常用的Lombok注解
通过在类上添加这些注解Lombok会自动生成相应的代码。
Getter / Setter: 自动生成字段的getter和setter方法。ToString: 自动生成toString()方法用于输出对象的字符串表示。EqualsAndHashCode: 自动生成equals()和hashCode()方法。NoArgsConstructor / RequiredArgsConstructor / AllArgsConstructor: 自动生成无参数构造函数、指定参数的构造函数或包含所有参数的构造函数。Data: 是一个组合注解相当于同时使用了Getter、Setter、ToString、EqualsAndHashCode、RequiredArgsConstructor注解。Slf4j: 自动生成日志记录器。