@Data@NoArgsConstructor@AllArgsConstructor 这几个常用注解什么意思?

简介: @Data@NoArgsConstructor@AllArgsConstructor 这几个常用注解什么意思?

这三个注解通常用于简化Java类的开发,特别是在使用一些框架时,如Lombok。让我们逐个解释这些注解的作用:

1. @Data

@Data 是 Lombok 提供的一个组合注解,它包含了一组常用注解的功能,如 @ToString、@EqualsAndHashCode、@Getter、@Setter 和 @RequiredArgsConstructor。


@ToString:自动生成 toString 方法,方便打印对象的内容。@EqualsAndHashCode:自动生成 equals 和 hashCode 方法,方便对象比较。

@Getter:自动生成所有字段的 get 方法。

@Setter:自动生成所有字段的 set 方法。

@RequiredArgsConstructor:生成带有参数的构造方法,对于被 final 修饰的字段,会生成参数存在的情况下的构造方法。

通过使用 @Data 注解,你不再需要手动编写这些繁琐的方法,可以简化类的代码结构。

2. @NoArgsConstructor

@NoArgsConstructor 是 Lombok 提供的注解,用于自动生成无参构造方法。


在Java中,如果你不手动提供构造方法,编译器会默认生成一个无参构造方法。但是,如果你手动提供了带参构造方法,编译器就不再生成无参构造方法。@NoArgsConstructor 解决了这个问题,它会在编译时生成一个无参构造方法,确保你的类可以在没有提供参数的情况下实例化。

3. @AllArgsConstructor


@AllArgsConstructor 是 Lombok 提供的注解,用于自动生成包含所有字段的构造方法。


通常情况下,如果你的类有很多字段,手动编写一个包含所有字段的构造方法会显得很繁琐。使用 @AllArgsConstructor 注解可以让 Lombok 在编译时为你自动生成一个包含所有字段的构造方法,省去了重复的劳动。


综合来说,这三个注解(@Data、@NoArgsConstructor、@AllArgsConstructor)都是为了减少开发者在编写Java类时的模板式代码,提高代码的简洁性和可读性。在使用这些注解时,记得添加相应的依赖以使Lombok工作,比如在Maven项目中添加以下依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version> <!-- 使用最新版本 -->
    <scope>provided</scope>
</dependency>

或者在Gradle项目中:

implementation 'org.projectlombok:lombok:1.18.22' // 使用最新版本
annotationProcessor 'org.projectlombok:lombok:1.18.22'



相关文章
|
Java
Java @Data 注解详细说明
Data注解是 Lombok 提供的一个组合注解,它会为类自动生成一些常见方法的样板代码,包括 getter、setter、equals、hashCode 和 toString 方法。
3249 5
|
存储 前端开发 Java
一篇文章带你搞懂Controller、Service等各层的功能与作用
本文将深入探讨这些controller.service等层的作用与功能,帮助读者更好地理解它们在软件开发中的重要性和运作原理。
5682 1
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
3245 2
|
JSON 前端开发 Java
SpringBoot中Date格式化处理
日期格式化处理:从混乱到清晰,轻松转换日期格式
1138 1
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
2002 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
前端开发 数据安全/隐私保护
若依框架---权限控制角色设计
若依框架---权限控制角色设计
4844 0
|
JavaScript Java Spring
@Async异步失效的9种场景
在Spring中,启用@Async异步功能需要在启动类或配置类上使用`@EnableAsync`。若未使用此注解,@Async将无效。另外,内部方法调用(如在一个类的方法中调用另一个被@Async注解的方法)会导致异步功能失效,因为这不涉及Spring的AOP代理。此外,@Async方法必须是public,返回类型为void或Future,不能是static或final,且其所在的类需被@Service等注解以使Spring管理。如果使用@ComponentScan,确保正确扫描包含@Async类的包路径。
680 1
|
人工智能 Nacos 开发者
Nacos 开源 MCP Router,加速 MCP 私有化部署
Nacos MCP Router 发布全新版本。带来了多项重要更新,包括对 SSE 和 StreamableHTTP 协议的全面支持、Docker 容器化部署方案以及革命性的 MCP Server 协议一键转换功能。文章中详细的介绍更新内容并简单演示了使用过程。Nacos MCP Router 新版本的发布,不仅提升了开发者的使用体验,也为 MCP 服务的广泛应用和生态繁荣奠定了基础,欢迎关注。
2001 63
|
自然语言处理 JavaScript Java
Spring 实现 3 种异步流式接口,干掉接口超时烦恼
本文介绍了处理耗时接口的几种异步流式技术,包括 `ResponseBodyEmitter`、`SseEmitter` 和 `StreamingResponseBody`。这些工具可在执行耗时操作时不断向客户端响应处理结果,提升用户体验和系统性能。`ResponseBodyEmitter` 适用于动态生成内容场景,如文件上传进度;`SseEmitter` 用于实时消息推送,如状态更新;`StreamingResponseBody` 则适合大数据量传输,避免内存溢出。文中提供了具体示例和 GitHub 地址,帮助读者更好地理解和应用这些技术。
2927 122
|
JSON 安全 Java
Spring Boot之全局异常处理:404异常为何捕获不到?
Spring Boot之全局异常处理:404异常为何捕获不到?
2694 0
Spring Boot之全局异常处理:404异常为何捕获不到?

热门文章

最新文章