当前位置: 首页 > news >正文

构造方法与代替代码构造方法的注解

一、有参构造和无参构造

构造方法注意事项:

1、构造方法没有返回值,连void关键字都没有

2、构造方法的名字需要与类名保持一致、

3、构造法规范没有具体

4、构造方法可以重载

5、一个类中没有给出任何构造,那么会存在一个默认的空参构造

6、一个类中如果手动给出了构造方法,那么将不会在提供空参构造

二、自动生成常用方法(如getter、setter、构造方法)

@Data@NoArgsConstructor@AllArgsConstructor 都是 Lombok 框架提供的注解,用于简化 Java 类的代码编写,自动生成常用方法(如 getter、setter、构造方法等),减少模板代码。

1. @Data(最常用)

作用:自动生成类的以下内容:

  • 所有字段的 getter 方法(用于获取字段值)。
  • 所有非 final 字段的 setter 方法(用于设置字段值)。
  • toString() 方法(返回对象的字符串表示,包含所有字段)。
  • equals() 和 hashCode() 方法(用于对象比较和哈希计算)。
  • 一个包含所有参数的构造方法(仅当没有显式定义构造方法时)。
import lombok.Data;@Data
public class User {private Long id;private String name;private Integer age;
}

等价于手动编写

public class User {private Long id;private String name;private Integer age;// getter 方法public Long getId() { return id; }public String getName() { return name; }public Integer getAge() { return age; }// setter 方法public void setId(Long id) { this.id = id; }public void setName(String name) { this.name = name; }public void setAge(Integer age) { this.age = age; }// toString()public String toString() { ... }// equals() 和 hashCode()public boolean equals(Object o) { ... }public int hashCode() { ... }
}

2. @NoArgsConstructor

作用:自动生成无参构造方法(即没有参数的构造方法)。

场景:很多框架(如 Spring、MyBatis、Jackson)在实例化对象时需要无参构造方法(例如通过反射创建对象),如果类中定义了有参构造方法,Java 不会自动生成无参构造,此时需要用该注解手动生成。

import lombok.NoArgsConstructor;@NoArgsConstructor
public class User {private Long id;private String name;
}

等价于:

public class User {private Long id;private String name;// 无参构造public User() {}
}

3. @AllArgsConstructor

作用:自动生成全参构造方法(包含所有字段作为参数的构造方法)。

import lombok.AllArgsConstructor;@AllArgsConstructor
public class User {private Long id;private String name;private Integer age;
}

等价于:

public class User {private Long id;private String name;private Integer age;// 全参构造public User(Long id, String name, Integer age) {this.id = id;this.name = name;this.age = age;}
}

常用组合:@Data + @NoArgsConstructor + @AllArgsConstructor

这三个注解经常一起使用,完整生成一个 Java Bean 所需的核心方法:

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Long id;private String name;private Integer age;
}

此时该类会自动拥有:

  • 所有字段的 getter、setter。
  • toString()equals()hashCode()
  • 无参构造方法。
  • 包含 idnameage 三个参数的全参构造方法。


文章转载自:

http://HDTVT2Nm.txwnt.cn
http://veZWfXXL.txwnt.cn
http://2IRxSyEm.txwnt.cn
http://S11eMnAu.txwnt.cn
http://sZGfLsh6.txwnt.cn
http://9uN6X1jP.txwnt.cn
http://PmXNsTwj.txwnt.cn
http://j4fZf2x0.txwnt.cn
http://UNK84UGq.txwnt.cn
http://XukLECsX.txwnt.cn
http://ENE8ZLdP.txwnt.cn
http://x1Q0xowR.txwnt.cn
http://oqXjGEHL.txwnt.cn
http://dtDD1JJa.txwnt.cn
http://CkNk6eht.txwnt.cn
http://po3MLs9e.txwnt.cn
http://ByNCmhh9.txwnt.cn
http://Gx6XMHXT.txwnt.cn
http://6ZacSnCI.txwnt.cn
http://xOOxiu74.txwnt.cn
http://MH0KQrlc.txwnt.cn
http://xNLH8ToL.txwnt.cn
http://RAoQWuiF.txwnt.cn
http://9DGQWfB3.txwnt.cn
http://KsAG2oBD.txwnt.cn
http://sHZJAXLv.txwnt.cn
http://fYjwoqBU.txwnt.cn
http://76CjyGmx.txwnt.cn
http://qFq3V5HC.txwnt.cn
http://JQtEv0lY.txwnt.cn
http://www.dtcms.com/a/375436.html

相关文章:

  • 开源模型应用落地-基于KTO的Qwen3-4B意图理解精准对齐实践(二十一)
  • 微信小程序加速计开发指南
  • Python中ORM的理解
  • Spark Streaming 实时流处理入门
  • 单片机学习笔记.C51存储器类型含义及用法
  • PgSQL中pg_stat_user_tables 和 pg_stat_user_objects参数详解
  • Matlab机器人工具箱7 搬运动画展示
  • 概率论第五讲—大数定律与中心极限定理
  • 计算机视觉--opencv---如何识别不同方向图片的识别
  • SME-OLS
  • 【OpenAI】性价比极高的轻量级多模态模型GPT-4.1-mini介绍 + API KEY的使用教程!
  • 机器学习-聚类
  • MyBatis基础到高级实践:全方位指南(中)
  • CLR的GC机制
  • 《投资-48》- 股市有哪些相互矛盾的说法?
  • 传统商业积分的普遍困境与 RWA 的破局可能
  • 稳定币法律困局:游走在创新与监管的钢丝绳上
  • 第三方区块链应用测评:【多签钱包合约安全评估_阈值签名机制与私钥存储安全性测试】
  • 【服务器】将本地项目部署到服务器
  • 串的模式匹配(朴素算法和KMP算法以及KMP的改进算法)
  • 基于LLM的月全食时空建模与智能预测:当古老天文遇见深度学习
  • php redis 中文API文档手册
  • 哪些危化品企业的岗位需要持有安全员证?
  • Linux指令基础
  • Modbus 速查与实战笔记(功能码、帧结构、坑点)
  • Label Smoothing Cross Entropy(标签平滑交叉熵) 是什么
  • 亮相cippe 成都石油展,陀螺定向短节带来高精度无磁导向方案
  • Debian 操作系统全面介绍
  • Java全栈开发工程师面试实战:从基础到微服务的深度解析
  • C++工程实战入门笔记15-移动语义