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

Java链式编程的定义、例子、使用方法、实际应用场景、自动装配构造

链式编程(Fluent Interface)是一种编程风格,允许通过方法调用连接在一起进行操作,通常用于提高代码的可读性和简洁性。在 Java 中,链式编程常通过返回 this(当前对象)来实现。这种做法在构建器模式中尤为常见。

举个例子

        一般我们构造一个方法的时候,会写如下代码 十分的不优雅

    public static void main(String[] args) {Dog dog = new Dog();dog.setAge(20);dog.setName("joker");}

链式编程起步

       原始getter and setter
    public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}
        链式getter and setter

                由于本身setter我们返回的void,此时我们将这个实例本身返回则可以实现链式编程

    public int getAge() {return age;}//链式编程 由于本身setter我们返回的void,此时我们将这个实例本身返回则可以实现链式编程public Dog setAge(int age) {this.age = age;return this;}public String getName() {return name;}//链式编程public Dog setName(String name) {this.name = name;return this;}
        使用链式
Dog dog = new Dog().setAge(10).setName("joker");

链式编程的实际使用

        // 2.获取最小概率值BigDecimal minAwardRate = strategyAwardEntities.stream().map(StrategyAwardEntity::getAwardRate).min(BigDecimal::compareTo).orElse(BigDecimal.ZERO);

lombok自动生成构造

        首先引入依赖假设你配置了Maven,如果还没学到Maven去网上搜索jar包导入库
    <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version></dependency></dependencies>
        其次在实体类方法上加上@Data和@Accessors(chain = true)注解即可
@Data
@Accessors(chain = true)
public class Dog {private int age;private String name;
}
        @Data

                属于组合注解用于生成所有字段的Getter、Setter、toString、构造器等大大节省代码量

        @Accessors

                当设置 chain = true 时,生成的 setter 方法会返回当前对象的引用,允许使用链式调用

        

相关文章:

Java链式编程的定义、例子、使用方法、实际应用场景、自动装配构造

链式编程&#xff08;Fluent Interface&#xff09;是一种编程风格&#xff0c;允许通过方法调用连接在一起进行操作&#xff0c;通常用于提高代码的可读性和简洁性。在 Java 中&#xff0c;链式编程常通过返回 this&#xff08;当前对象&#xff09;来实现。这种做法在构建器模…...

用 Git Stash 临时保存修改,轻松切换任务!

在开发过程中&#xff0c;我们经常会遇到这样的情况&#xff1a;正在写代码&#xff0c;突然领导或同事让你赶紧处理一个紧急 bug&#xff0c;但你当前的代码还没写完&#xff0c;不能提交&#xff0c;这时候该怎么办呢&#xff1f;别慌&#xff0c;Git 的 stash 命令正好能帮上…...

Android 下通过触发 SIGTRAP 信号实现反调试

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 详细的 Linux 信号列表 Linux 信号是一种用于进程间通信&#xff08;IPC&#xff09;和异常处理的机制。以下是详细的 Linux 信号列表&#xff0c;包含信号名…...

【MySQL】 表的增删操作

目录 1.Create&#xff08;增&#xff09; 1.1.单行数据 全列插入 1.2.多行数据 指定列插入 1.3.插入否则更新 1.4.替换数据&#xff08;REPLACE&#xff09; 2.Delete&#xff08;删&#xff09; 2.1.删除表中的某个条目 2.2.删除整张表数据 2.3.截断表 1.Create…...

新生入门季 | 学习生物信息分析,如何解决个人电脑算力不足的问题?

随着生物信息学在科研和教育中的快速普及&#xff0c;越来越多的新生开始接触基因组测序、RNA分析等复杂计算任务。然而&#xff0c;在面对这些大规模数据时&#xff0c;个人电脑的算力往往显得捉襟见肘。你是否也在为自己的笔记本性能不足而苦恼&#xff1f; 这篇文章将为你提…...

20255 - 中医方剂学 - 考研 - 执业

第1章 总论 1.我国现存最早的记载方剂的医书是&#xff08;&#xff09;( ) [单选] A.《太平圣惠方》 B.《黄帝内经》 C.《五十二病方》 D.《千金要方》 E.《外台秘要》 正确答案: C 2.我国最早的中医经典理论著作是&#xff08;&#xff09;( ) [单选] A.《伤寒杂病论…...

【Vue.js设计与实现】第三篇第9章:渲染器-简单Diff算法-阅读笔记

文章目录 9.1 减少 DOM 操作的性能开销9.2 DOM 复用与 key 的作用9.3 找到需要移动的元素9.4 如何移动元素9.5 添加新元素9.6 移除不存在的元素 系列目录&#xff1a;【Vue.js设计与实现】阅读笔记目录 当新旧vnode 的子节点都是一组节点时&#xff0c;为了以最小的性能…...

服务器软件之Tomcat

服务器软件之Tomcat 服务器软件之Tomcat 服务器软件之Tomcat一、什么是Tomcat二、安装Tomcat1、前提&#xff1a;2、下载3、解压下载的tomcat4、tomcat启动常见错误4.1、tomcat8.0 startup报错java.util.logging.ErrorManager: 44.2、java.lang.UnsatisfiedLinkError 三、Tomca…...

Flutter包管理(三)

1、作用 在APP的实际开发过程中往往会依赖很多包&#xff0c;而这些包之间存在着交叉依赖、版本依赖&#xff0c;由开发者自己管理手动管理会非常麻烦&#xff0c;每种开发生态或编程官方会提供一些包的管理工具&#xff0c;在Flutter中我们在pubspec.yaml文件中来管理第三方依…...

CGNS资料

CGNS数据文件 资料 CFD General Notation System CGNS Converters vtkCGNSReader cgnsToFromFoam Example Computer Codes 8.1.2. CGNS Mesh Format and Multizone Interface Connectivity 8 Multizone Interface Connectivity pyvista.cgnsreader CGNS for MATLAB and Octave…...

论文阅读(十六):Deep Residual Learning for Image Recognition

文章目录 1.介绍2.基本原理3.两种残差块4.网络结构 论文&#xff1a;Deep Residual Learning for Image Recognition   论文链接&#xff1a;Deep Residual Learning for Image Recognition   代码链接&#xff1a;Github 1.介绍 在ResNet网络提出之前&#xff0c;传统的卷…...

Dubbo 序列化方式

Hession 这是dubbo的默认序列化协议&#xff0c;是一种二进制协议&#xff0c;他的特点是序列化的速度比较快&#xff0c;并且序列化的数据体积比较小。Hession适合于大部分场景&#xff0c;因此被选为dubbo的默认序列化协议。 Json Json是一种基于文本的序列化方式&#xf…...

如何替换OCP节点(二):使用 antman脚本 | OceanBase应用实践

前言&#xff1a; OceanBase Cloud Platform&#xff08;简称OCP&#xff09;&#xff0c;是 OceanBase数据库的专属企业级数据库管理平台。 在实际生产环境中&#xff0c;OCP的安装通常是第一步&#xff0c;先搭建OCP平台&#xff0c;进而依赖OCP来创建、管理和监控我们的生…...

15.JVM垃圾收集算法

一、垃圾收集算法 1.分代收集理论 分代收集理论是JAVA虚拟机进行垃圾回收的一种思想&#xff0c;根据对象存活周期的不同将内存分成不同的几个区域&#xff1b;一般将JAVA堆内存分为新生代和老年代&#xff1b;根据每个分代特点选择不同的垃圾收集器&#xff1b; 在新生代中&am…...

软件工程:图书管理系统甘特图

1 实验目的 熟悉GanttProject 软件环境&#xff0c;能够使用GanttProject绘制甘特图,进行项目管理与规划。 2 实验内容 为小型图书管理系统项目的实施计划绘制甘特图。 小型图书管理系统项目包含登录、浏览、管理读者、管理图书资料、管理书目、登记借书、登记还书、预定图书、…...

视频的编解码格式

文章目录 视频的编解码格式概念术语视频处理流程视频封装格式视频编码格式视频编解码器&#xff0c;视频容器和视频文件格式之间的区别补充视频码率 参考资料 视频的编解码格式 概念术语 两大组织主导视频压缩的组织及其联合(joint)组织 ITU-T(VCEG) ITU-T的中文名称是国际电信…...

网络资源模板--Android Studio 实现简易新闻App

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--基于Android studio 实现的简易新闻App 二、项目测试环境 三、项目详情 登录页 用户输入&#xff1a; 提供账号和密码输入框&#xff0c;用户可以输入登录信息。支持“记…...

LabVIEW提高开发效率技巧----离线调试

离线调试是LabVIEW开发中一项重要的技巧&#xff0c;通过使用Simulate Signal Express VI生成虚拟数据&#xff0c;开发者能够有效减少对实际硬件的依赖&#xff0c;加速开发过程。这种方法不仅可以提高开发效率&#xff0c;还能降低成本&#xff0c;增强系统的灵活性。 ​ 离…...

6N137S1取反电路图

文章目录 一、前言二、6N137S1性能介绍三、应用电路图 一、前言 在硬件电路设计中需要用到隔离电路&#xff0c;但此引脚输出为WS2812的信号&#xff0c;频率有840khz&#xff0c;所以需要使用逻辑光耦&#xff0c;选用6N137S1光耦&#xff0c;速率能达到10Mhz&#xff0c;能满…...

Nullinux:一款针对Linux操作系统的安全检测工具

关于Nullinux Nullinux是一款针对Linux操作系统的安全检测工具&#xff0c;广大研究人员可以利用该工具针对Linux目标设备执行网络侦查和安全检测。 该工具可以通过SMB枚举目标设备的安全状况信息&#xff0c;其中包括操作系统信息、域信息、共享信息、目录信息和用户信息。如…...

学会这 5 个 AI 神器做字体设计,保证让你私单接到爆!

最近我在浏览 AI 绘画的相关内容时&#xff0c;发现不少图像都是与字体相关的&#xff0c;而且其中一些呈现出的艺术特效很是让人眼前一亮。 放在之前&#xff0c;我们需要掌握一些专业技能、并花费大量时间才能设计出精致酷炫的艺术字&#xff0c;但是现在却可以轻松用文本直…...

《Vue3 踩坑》expose 和 defineExpose 暴露属性或方法注意事项

选项式写法 使用 选项式API - 状态选项 - expose 一定要注意&#xff1a; 接下来&#xff0c;进一步看示例说明&#xff1a; 设置 expose 仅显示列出的属性/方法才能被父组件调用&#xff1b;代码第 2 行&#xff0c;父组件可访问属性 a 和 方法 myFunc01&#xff0c;不可访…...

10.13论文阅读

通过联合学习检测和描述关键点增强可变形局部特征 摘要 局部特征提取是计算机视觉中处理图像匹配和检索等关键任务的常用方法。大多数方法的核心理念是图像经历仿射变换&#xff0c;忽略了诸如非刚性形变等更复杂的效果。此外&#xff0c;针对非刚性对应的新兴工作仍然依赖于…...

六西格玛黑带项目:TBX-02无人机飞行稳定性提升——张驰咨询

一、项目背景与问题定义 TBX-02是该公司最新发布的消费级无人机&#xff0c;面向摄影爱好者和户外探险者。产品上市后&#xff0c;通过客户反馈和实际测试数据发现&#xff0c;该无人机在复杂飞行环境中&#xff0c;如强风或快速移动时&#xff0c;存在明显的飞行抖动和稳定性…...

git clone 国内镜像

比如 git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git 改成 git clone https://gitclone.com/github.com/HKUST-Aerial-Robotics/A-LOAM.git...

【服务器虚拟化】

服务器虚拟化是一种将一台物理服务器划分为多个虚拟服务器的技术&#xff0c;每个虚拟服务器都可以独立运行操作系统和应用程序。下面是一个详细的教程&#xff0c;以KVM虚拟化为例&#xff0c;介绍了具体的操作步骤和执行命令。 准备工作 a. 确保你的服务器支持虚拟化技术&…...

【RAG】aiops第一名方案-EasyRAG:自动网络运营的高效检索增强生成框架

来看一个RAG比赛方案&#xff0c;提出了一个名为EasyRAG的框架&#xff0c;用于自动化网络操作的检索增强生成。该框架旨在解决网络操作中信息检索和生成效率低、准确性差的问题。研究难点包括&#xff1a;如何在保证准确性的前提下提高检索和生成的效率&#xff1b;如何实现简…...

3款备受好评的电脑数据恢复软件,赶紧收藏以备不时之需

在日常工作和生活中&#xff0c;电脑数据丢失是许多人都会遇到的问题。无论是误删文件、硬盘格式化&#xff0c;还是系统崩溃&#xff0c;都可能导致重要数据的丢失。所以&#xff0c;好用的数据恢复软件必不可少。 但在如今的市场上数据恢复软件琳琅满目&#xff0c;它们在恢复…...

.net core 实现多线程方式有哪些

在 .NET Core 中&#xff0c;有多种方式可以实现多线程编程。这些方式包括使用 Thread 类、Task 和 Parallel 类库。每种方法都有其适用场景和优缺点。下面我将通过代码示例来展示这些不同的多线程实现方式。 1. 使用 Thread 类 Thread 类是 .NET 中最基本的多线程实现方式。…...

《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化

1. 前言 其实磁盘优化和IO优化&#xff0c;我在前面的其他Linux调优博文中已经讲述过或者涉及过了&#xff0c;但是太过零碎&#xff0c;所以本篇就来集中深入讨论下Linux磁盘和IO调优。 2.磁盘调优 结合我多年的经验&#xff0c;本人认为磁盘调优最重要的是读写性能的提升和…...