Lombok @Constructor 注解:轻松生成类的构造方法
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ; - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观
本小节中,我们将学习 Lombok 的三个构造器注解:@NoArgsConstructor
, @RequiredArgsConstructor
和 @AllArgsConstructor
,这三个注解可以为你省去编写繁琐的构造方法的麻烦。
1. Lombok 构造方法注解是什么?
首先,让我们来了解一下这三个注解:
@NoArgsConstructor
:这个注解会让 Lombok 为你的类生成一个无参数的构造方法。非常简单,对吧?@RequiredArgsConstructor
:这个注解稍微复杂一些,它会让 Lombok 为你的类生成一个构造方法,构造方法的参数是类中所有需要特殊处理的字段,也就是说,标记为final
和@NonNull
的字段会被作为参数。@AllArgsConstructor
:这个注解会让 Lombok 为你的类生成一个包含所有字段的构造方法。
2. 如何使用这些注解?
Lombok 的注解用起来就像点菜一样容易。你只需要在你的类上添加这些注解,Lombok 就会按照你的要求为你生成相应的构造方法。下面我给大家演示一下:
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.NonNull;
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class Student {
@NonNull
private String name;
private final int age;
}
这个 Student
类,有两个字段:name
和 age
。由于 name
字段标记了 @NonNull
,age
字段标记了 final
,因此,Lombok 会生成以下三个构造方法:
- 无参数的构造方法:
public Student() { }
- 包含所有特殊字段(
name
和age
)的构造方法:public Student(String name, int age) { this.name = name; this.age = age; }
- 包含所有字段的构造方法:
public Student(String name, int age) { this.name = name; this.age = age; }
3. 自定义构造方法
当然,Lombok 还提供了一些选项,让你可以对生成的构造方法进行自定义。比如:
@NoArgsConstructor(force = true)
:当有final
字段没有被初始化时,这个选项可以强制 Lombok 生成一个无参数的构造方法,并将所有final
字段初始化为其默认值(0、false、null等)。@AllArgsConstructor(access = AccessLevel.PROTECTED)
:这个选项可以用来改变生成的构造方法的访问级别。@RequiredArgsConstructor(staticName = "of")
:这个选项可以让 Lombok 为你生成一个静态的工厂方法,而不是一个构造方法。
4. 结语
Lombok 的这三个构造方法注解,帮助我们省去了大量编写构造方法的时间,让我们可以将更多的精力投入到业务逻辑的实现上。但请注意,尽管它们很方便,但如果使用不当,可能会引发一些难以预料的问题,比如忘记初始化 final
字段等。因此,我们在使用的时候,还需要注意这些细节问题。