Lombok是一个工具,可以通过简单的注释形式,帮助我们简化和消除一些必要但臃肿的Java代码。通过使用相应的注释,可以在编译源代码时生成相应的方法。本文重点介绍在IDEA中安装和使用Lombok插件的方法。有兴趣的朋友来看看吧。
背景
在开发过程中,我们通常会定义大量的JavaBean,然后通过IDE生成其属性的constructor、getter、setter、equals、hashcode、toString方法。当我们想改变某个属性时,比如命名、类型等。我们需要再生上面提到的这些方法。Java中有没有避免这种重复劳动的方法?答案是肯定的。让我们来看看下图。右边是一个简单的JavaBean,它只定义了两个属性,并将@Data添加到类中。从左边的结构图可以看出,上述方法已经自动生成。
Lombok简介
Ombok是一个工具,可以帮助我们简化和消除一些必须存在但通过简单的注释显得臃肿的Java代码。简单来说,比如我们创建一个新的类,然后在里面写几个字段。然后,通常我们需要手动建立get、set、constructor、log、toString、hashCode、equals等。尤其是当一个类有几十个属性时,那么长的get、get、equal。lombok的目的就是让我们省去了手动创建这些代码的麻烦,它可以在我们编译源代码的时候自动为我们生成这些方法。
官方地址:https://projectlombok.org/, github地址:https://github.com/rzwitserloot/lombok.
Lombok使用
在IDEA中添加Lombok插件,文件-设置-插件搜索Lombok插件,点击安装,安装完成后重启IDEA。
在Maven项目的pom.xml中添加配置:
属国
groupIdorg.projectlombok/groupId
artifactIdlombok/artifactId
版本1 . 16 . 6/版本
/依赖关系
注解介绍
下面只是几个常用的笔记。更多信息,请参考:https://projectlombok.org/features/index.html.
@Getter/@Setter
它可以作用于类和属性。如果放在一个类上,它将为所有非静态属性生成Getter/Setter方法。如果放在属性上,它将为该属性生成Getter/Setter方法。并且可以指定Getter/Setter方法的访问级别。
@EqualsAndHashCode
默认情况下,所有非瞬态和非静态字段都用于生成equals和hascode方法,您还可以指定使用哪些属性。
@ToString
生成toString方法。默认情况下,将输出类名和所有属性,属性将按顺序输出,用逗号分隔。
@NoArgsConstructor、@RequiredArgsConstructor和@AllArgsConstructor
没有参数构造函数、部分参数构造函数和完全参数构造函数。当我们需要重载多个构造函数时,Lombok无能为力。
@数据
@ToString、@EqualsAndHashCode、所有属性的@Getter组合、所有非final属性的@Setter和@RequiredArgsConstructor。通常,我们使用这个注释就足够了。
Lombok原理
在了解了简单的使用之后,你现在应该更好奇它是如何实现的。在整个使用过程中,只需要使用标注,不需要做其他额外的工作。玄机应该是注解的解释。虽然JDK5引入了注释,但它也提供了两种解析方法。
运行时解析
对于可以在运行时解析的批注,必须将@Retention设置为RUNTIME,以便可以通过反射获得批注。java.lang.reflect反射包中提供了一个接口AnnotatedElement,它定义了几种获取注释信息的方法。类、构造函数、字段、方法、包等。都实现了这个接口,大多数开发人员应该熟悉这个解析方法。
布尔型isAnnotationPresent(类。扩展注释Annotation class);
T extends Annotation T get Annotation(ClassT Annotation class);
annotation[]get annotations();
annotation[]getDeclaredAnnotations();
Lombok问题
不支持多个参数构造函数的重载。
这就是如何在IDEA中安装和使用Lombok插件的细节。关于IDEA Lombok插件的安装和使用的更多信息,请关注我们的其他相关文章!