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

Java 实体类链式操作

目录

1. 使用返回 this 的 setter 方法

2. 使用 Lombok 的 @Accessors 注解

3. 建造者模式 (Builder Pattern)

比较


        链式设置参数(也称为链式调用或方法链)是一种编程风格,可以让代码更加简洁易读。在 Java 实体类中实现链式设置参数通常有以下方式:

1. 使用返回 this 的 setter 方法

public class User {private String name;private int age;private String email;// 链式 setter 方法public User setName(String name) {this.name = name;return this;}public User setAge(int age) {this.age = age;return this;}public User setEmail(String email) {this.email = email;return this;}// 常规 getter 方法public String getName() {return name;}public int getAge() {return age;}public String getEmail() {return email;}
}

使用示例:

User user = new User().setName("张三").setAge(25).setEmail("zhangsan@example.com");

2. 使用 Lombok 的 @Accessors 注解

如果你使用 Lombok 库,可以更简洁地实现链式调用:

import lombok.Data;
import lombok.experimental.Accessors;@Data
@Accessors(chain = true)
public class User {private String name;private int age;private String email;
}

使用方式与第一种相同:

User user = new User().setName("张三").setAge(25).setEmail("zhangsan@example.com");

3. 建造者模式 (Builder Pattern)

对于更复杂的对象创建,可以使用建造者模式:

public class User {private final String name;private final int age;private final String email;private User(Builder builder) {this.name = builder.name;this.age = builder.age;this.email = builder.email;}public static class Builder {private String name;private int age;private String email;public Builder name(String name) {this.name = name;return this;}public Builder age(int age) {this.age = age;return this;}public Builder email(String email) {this.email = email;return this;}public User build() {return new User(this);}}// getter 方法public String getName() {return name;}public int getAge() {return age;}public String getEmail() {return email;}
}

使用示例:

User user = new User.Builder().name("张三").age(25).email("zhangsan@example.com").build();

比较

  1. 直接链式 setter:简单直接,适合简单对象
  2. Lombok:代码最简洁,但需要引入依赖
  3. 建造者模式:最适合复杂对象的构建,可以确保对象创建时的不可变性和一致性

        这篇博客到这里就接近尾声了,希望我的分享能给您带来一些启发和帮助,别忘了点赞、收藏。您的每一次互动、鼓励是我持续创作的动力!期待与您再次相遇,共同探索更广阔的世界!

http://www.xdnf.cn/news/52525.html

相关文章:

  • leetcode 1035. Uncrossed Lines
  • Java的IO流 - 字节流和字符流
  • 测试新版oda teigha,开发webcad,实现在线查看dwg图纸
  • 哪个开源协议对用户最友好?开源协议对比
  • springboot自动装配的原理
  • Vite打包原理: Tree-shaking在Vue3项目中的实际效果
  • 浅聊docker的联合文件系统
  • get和post的区别
  • 基于 JavaWeb 的 SpringBoot 办公 ERP 管理系统设计与实现(源码+文档+部署讲解)
  • 1~4字节的CRC32非暴力破解,在线工具手工计算
  • 基于 Elasticsearch 8.12.0 集群热词实现
  • 大模型应用开发自学笔记
  • C++ 俄罗斯方块 | Tetris⚡YQW · Studio ⚡【无需下载图片】
  • 英式英语与美式英语的拼写差异
  • Cesium 地形加载
  • 如何部署MCP Sever【SSE通信方式】及调试
  • 从浏览器地址栏输入 URL 到网页显示,这中间发生了什么?
  • data_analysis29
  • seate TCC模式案例
  • 征程 6 VIO 通路断流分析
  • 基于FPGA的四层电梯设计系统设计和实现
  • 19年电赛D题硬件详解
  • C语言自增自减题目
  • 安全技术和防火墙
  • JVM 学习
  • SpringBoot集成Kafka详解
  • Python range 使用详解
  • P2505 [HAOI2012] 道路 Solution
  • 62页华为IPD-MM流程:市场调研理论与实践方案精读【附全文阅读】
  • Linux网络UDP与TCP