Lombok的基本使用

Lombok的基本使用

Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。

Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。

Lombok的使用跟引用jar包一样,可以在官网(https://projectlombok.org/download)下载jar包,也可以使用maven添加依赖:

1)引入相应的maven包

​ org.projectlombok

​ lombok

​ 1.16.18

​ provided

Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

2)添加IDE工具对Lombok的支持

​ IDEA中引入Lombok支持如下:

Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选

​ 点击File-- Settings设置界面,安装Lombok插件:

img

点击File-- Settings设置界面,开启 AnnocationProcessors:

img

开启该项是为了让Lombok注解在编译阶段起到作用。

常用的 lombok 注解:

@Data :注解在类上;包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能,提供类所有属性的 getter 和 setter 方法,此外还提供了equals、canEqual、hashCode、toString 方法

@Setter:注解在属性上;为属性提供 setter 方法

@Getter:注解在属性上;为属性提供 getter 方法

@ToString:注解在类上;生成toString()方法,默认情况下,它会按顺序(以逗号分隔)打印你的类名称以及每个字段。可以这样设置不包含哪些字段@ToString(exclude = “id”) / @ToString(exclude = {“id”,“name”})

如果继承的有父类的话,可以设置callSuper 让其调用父类的toString()方法,例如:@ToString(callSuper = true)

@EqualsAndHashCode:注解在类上;生成hashCode()和equals()方法,默认情况下,它将使用所有非静态,非transient字段。但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。

@NonNull: 注解在属性上;标识属性是不能为空,为空则抛出异常。

@Slf4j :注解在类上;根据用户实际使用的日志框架生成log日志对象。

@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象

@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法。当类中有final字段没有被初始化时,编译器会报错,此时可用@NoArgsConstructor(force = true),然后就会为没有初始化的final字段设置默认值 0 / false / null。对于具有约束的字段(例如@NonNull字段),不会生成检查或分配,因此请注意,正确初始化这些字段之前,这些约束无效。

@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)

@RequiredArgsConstructor:注解在类上;会生成构造方法(可能带参数也可能不带参数),如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段@RequiredArgsConstructor(staticName = “of”)会生成一个of()的静态方法,并把构造方法设置为私有的。

equiredArgsConstructor(staticName = “of”)会生成一个of()的静态方法,并把构造方法设置为私有的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
import lombok是用于在Java项目中简化代码的工具库。通过使用lombok,我们可以通过添加注解来自动生成一些常见的代码,如Getter和Setter方法。在使用lombok之前,我们需要在项目的依赖中添加lombok的库。你可以在Maven仓库中找到最新的lombok依赖版本,并将其添加到项目的pom.xml文件中。例如,可以使用以下依赖配置来添加lombok的最新版本: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency> ``` 一旦添加了lombok的依赖,我们就可以在Java类中使用lombok的注解来自动生成代码。例如,使用@Getter和@Setter注解可以为类的所有属性生成Getter和Setter方法。示例如下: ```java import lombok.Getter; import lombok.Setter; @Getter @Setter public class Example { private int age = 10; } ``` 在上面的示例中,使用@Getter和@Setter注解为Example类的age属性生成了相应的Getter和Setter方法。 除了@Getter和@Setter之外,lombok还提供了许多其他有用的注解,如@NonNull、@Data、@ToString等。这些注解可以根据需要在类或属性上使用,以简化代码的编写。例如,@NonNull注解可以用于标记属性不能为空,@Data注解可以为类生成常见的方法,如equals、hashCode和toString方法。 总之,import lombok是用于简化Java代码的工具库,通过添加注解可以自动生成常见的代码。 #### 引用[.reference_title] - *1* [lombok安装及使用](https://blog.csdn.net/qq_36335126/article/details/109299077)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [lombok基本使用](https://blog.csdn.net/weixin_42870923/article/details/100573959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值