Hi Guys, today I am going to talk about Project Lombok. This blog post is divided into 3 parts:
- 介绍设置(使用IntelliJ想法)龙目岛注释
1. Introduction
Lombok是一个Java库,可帮助减少样板代码。 这样您就可以更加专注于实际代码。 例如 一个简单的POJO类由属性,getters / setter(构造函数)组成,因此在这里Lombok将通过添加注释来帮助您自动生成Getter / Setters(和构造函数)。
2. Setup
Download Lombok plugin for Idea IntelliJ https://plugins.jetbrains.com/plugin/6317 as per your build number.
Goto File -> Settings -> Type Plugins in search text box at top left.
Now click Install plugin from disk. button and select the downloaded Lombok Plugin.
You are done now
In case you are using eclipse please refer to This Blog Post.
3. Lombok Annotations
Lombok has many different types of annotations for different tasks. You can view the full list of annotations here. In this blog, we will discuss the following annotations.
- @ Getter / @ Setter@ToString和@EqualsAndHashCode@NonNull@ NoArgsConstructor,@ RequiredArgsConstructor和@AllArgsConstructor@数据@值@Builder@清理
首先,您需要在类路径中添加Lombok依赖项。 如果使用的是maven,则在pom.xml中添加以下相关性。
Gradle用户将在build.gradle文件中添加以下依赖项。
1. @Getter/@Setter
每个人都熟悉普通POJO中的Getters / Setters。 生成getter / setter并不是一项艰巨的任务,如今,IDE已经足够聪明,可以为您生成代码,但它会增加LOC,并且管理它们可能会很麻烦。 龙目岛只需添加即可帮助您生成吸气剂/定型剂@盖特和@Setter. By default generated methods type is public but you can change the type by overriding value property of @盖特/@Setter which takes AccessLevel enum type. Available AccessLevel enum values are [PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE, NONE]. If you set the value to AccessLevel.NONE那么将不会生成任何getter / setter。
您也可以在类级别添加这些注释。 它将为所有字段生成getter,为所有非最终字段和非静态字段生成setter。
上面的代码相当于
注意:@Setterwillnotworkonfinalfields.
2. @ToString and @EqualsAndHashCode
@ToString和@EqualsAndHashCode产生toString(),等于(对象对象)和hashCode()在我们的pojo中。 默认情况下@ToString includes Classname和all non-static fields. You can specify fields in 的 property 的 @ToString。 您还可以通过以下方式排除字段排除属性。
默认情况下@EqualsAndHashCode包括非静态和非瞬态字段。 您可以通过提供以下内容来包含或排除字段的和排除财产(与@ToString)。 它具有称为callSuper which invokes superclass’s implementation 的 hashCode()和等于()。 默认情况下,它不会调用超类方法。 您可以通过将其值设置为来覆盖它真正。
3. @NonNull
此注释将为任何字段生成空检查。 它可以与构造函数参数,字段或方法参数一起使用。
上面的代码相当于
4. @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
@NoArgsConstructor将生成默认构造函数。如果您的班级包含final字段,则将生成编译错误。因此,如果您要使用默认值为最终字段集生成默认构造函数力=真@NoArgsConstructor(force=true).
上面的代码相当于
@RequiredArgsConstructor如果您的类包含final字段或任何标有的字段,则将生成构造函数@ lombok.NotNull然后它将生成参数化的构造函数,并将这些字段添加到构造函数args中,并将空检查添加到构造函数中。
上面的代码相当于
@AllArgsConstructor将生成参数化的构造函数,并将所有字段作为构造函数args。
上面的代码相当于
注意:如果要使用私有构造函数生成静态工厂方法,请设置静态名称@xxxConstructor的属性。
上面的代码相当于
5. @Data
@数据注释只能与Class一起使用,并且涵盖以下注释:
- @盖特@Setter@RequiredArgsConstructor@ToString@EqualsAndHashCode@值 Above code is equvalant to
6. @Value
@值用于创建不可变的POJO。 默认情况下,类和所有字段均设为final,并且不会生成设置器。 就像@数据它也会产生toString(),hashCode()和等于()。 如果您不想将字段定为最终字段,请用@NonFinal。
7. @Builder
@Builder is used to generate builder API pattern. It generates an inner class called <YourClassName>Builder which expose builder pattern-based setters. @单数用于@Builder并且仅对java.util.List类型。 此批注将添加到加法器方法中,一个用于单个元素,另一个用于完整集合。
8. @Cleanup
@清理帮助自动关闭资源。 该注释采用一个参数作为关闭方法的名称。 默认情况下,其值为关。
快乐编码😀😀😀! 如果您有任何反馈意见,请在下面进行评论。