idea中java类属性(字段)链式赋值
很多人看到标题可能会想到 lombok 的 @Builder,lombok 在国内用的挺多的,开源的组件中 mybatis-plus 中用到了这个,使用这个有一个问题就是通过对应 get 和 set 方法找不到对应的赋值方法,因为 lombok 使用了 apt 在编译期生成了相关的字节码。这样对于喜欢看源码的人来说很不好,起码我在看国外开源的代码时没有看到过使用 lombok 的。
在工作期间就想到了一点,idea 中有没有那种相关生成 Builder 代码的插件?
经过多次尝试,发现了一个名为 innerbuilder 的插件可以做到和 lombok 生成的代码一致。
InnerBuilder - IntelliJ IDEs Plugin | Marketplace
如下代码为例
public class SceneProductRelaInfo {/*** 场景信息*/private SysnSceneProductInfo sysnSceneProductInfo;/*** 场景关联商品信息*/private List<WarePortal> productInfoList;public SysnSceneProductInfo getSysnSceneProductInfo() {return sysnSceneProductInfo;}public void setSysnSceneProductInfo(SysnSceneProductInfo sysnSceneProductInfo) {this.sysnSceneProductInfo = sysnSceneProductInfo;}public List<WarePortal> getProductInfoList() {return productInfoList;}public void setProductInfoList(List<WarePortal> productInfoList) {this.productInfoList = productInfoList;}}
在 idea->Settings->Plugins 中搜索 innerbuilder 进行安装

代码右键 Generate

按照如下处理即可
public class SceneProductRelaInfo {/*** 场景信息*/private SysnSceneProductInfo sysnSceneProductInfo;/*** 场景关联商品信息*/private List<WarePortal> productInfoList;private SceneProductRelaInfo(Builder builder) {setSysnSceneProductInfo(builder.sysnSceneProductInfo);setProductInfoList(builder.productInfoList);}public SysnSceneProductInfo getSysnSceneProductInfo() {return sysnSceneProductInfo;}public void setSysnSceneProductInfo(SysnSceneProductInfo sysnSceneProductInfo) {this.sysnSceneProductInfo = sysnSceneProductInfo;}public List<WarePortal> getProductInfoList() {return productInfoList;}public void setProductInfoList(List<WarePortal> productInfoList) {this.productInfoList = productInfoList;}public static final class Builder {private SysnSceneProductInfo sysnSceneProductInfo;private List<WarePortal> productInfoList;private Builder() {}public static Builder builder() {return new Builder();}public Builder sysnSceneProductInfo(SysnSceneProductInfo val) {sysnSceneProductInfo = val;return this;}public Builder productInfoList(List<WarePortal> val) {productInfoList = val;return this;}public SceneProductRelaInfo build() {return new SceneProductRelaInfo(this);}}
}
最终生成出来的代码和 lombok 的一致。
SceneProductRelaInfo build = SceneProductRelaInfo.builder().productInfoList(null).sysnSceneProductInfo(null).build();
上面的代码逻辑在使用 @Builder 注解和生成的代码中切换,没有异常。
lombok 原理
https://blog.csdn.net/ly279481968/article/details/108000799
https://www.jianshu.com/p/302c56f9574d
https://zhuanlan.zhihu.com/p/485004057
https://zhuanlan.zhihu.com/p/574760548
相关文章:
idea中java类属性(字段)链式赋值
很多人看到标题可能会想到 lombok 的 Builder,lombok 在国内用的挺多的,开源的组件中 mybatis-plus 中用到了这个,使用这个有一个问题就是通过对应 get 和 set 方法找不到对应的赋值方法,因为 lombok 使用了 apt 在编译期生成了相…...
vue通知(滚动)
1. li宽度不顾定 <template><div id"app"><div id"box" mouseover"clearLeft" mouseleave"setLeft"><ul :style"{ transform: translateX( left px) }" ref"cmdlist"><li v-for&qu…...
linux安装新版本git2、配置github-ssh。(centos、aws)
一、安装Git 1、yum默认版本git #1.安装git sudo yum install git -y #2.确认Git已经安装成功 git --version如果要安装较新版本,可以安装一个repo ,但是我这第一次尝试失败了,执行完提示找不到git2u,ius repo也连不上。而且每次…...
毅速丨3D打印结合拓扑优化 让轻量化制造更容易
制造轻量化对于提高能源利用效率、提高产品性能和减少环境影响,推动制造业的绿色化、高质量发展具有重要的促进作用。 轻量化设计对许多领域都有着重要影响,尤其是那些需要降低能源消耗、提高运输效率或减少对环境影响的领域。如航空航天,轻量…...
6252: 【C1】【分支】比较大小(一)
目录 题目描述 输入 输出 样例输入 样例输出 提示 来源 C代码: 题目描述 输入两个整数,输出较大数(两数相等输出任意一个) 输入 两行 第一行一个整数:m 第二行一个整数:n ( -30000 < m , n…...
网工实验手册:RSTP如何配置?
1. 实验目的 熟悉RSTP的应用场景掌握RSTP的配置方法 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注,评论区留下邮箱发给你! 2. 实验拓扑 实验拓扑如图所示: 图:RSTP的配置 3. 实验步骤 (1) …...
uniapp开发h5引入第三方js(sdk)
manifest.json 应用配置 | uni-app官网 根据文档上描述需要自定义模板的场景为: 方法一: 起初以为是在原有的index.html基础上再新建一个html文件,在项目根目录建立一个template.h5.html(仿照hello-uni-app项目)&…...
Could not find artifact com.sleepycat;je:jar:7.3.7 in aliyunmaven
在编译inlong源码时报的错误,去本地库里发现只有lastupdate的文件,就又去maven库里看了一下Maven Repository: com.sleepycat je (mvnrepository.com),发现没有这个版本,将版本进行修改错误解决...
rust学习—— 控制流if 表达式
控制流 根据条件是否为真来决定是否执行某些代码,或根据条件是否为真来重复运行一段代码,是大部分编程语言的基本组成部分。Rust 代码中最常见的用来控制执行流的结构是 if 表达式和循环。 if 表达式 if 表达式允许根据条件执行不同的代码分支。你提供…...
POSIX信号量
目录 信号量的原理 信号量函数 使用信号量实现线程互斥功能 基于环形队列的生产消费模型 生产者和消费者必须遵守的两个规则 信号量的原理 通过之前的学习,我们知道有的资源可能会被多个执行流同时申请访问,我们将这种资源叫做临界资源,…...
stable diffusion和midjourney哪个好
midjourney和stable diffusion哪个好?midjourney和stable diffusion的区别?那么今天就从这2款软件入手,来探索一下他们的功能的各项区别吧,让你选择更适合你的一款ai软件。 截至目前,我们目睹了生成式人工智能工具的在…...
固件签名的安全解决方案 安当加密
在汽车行业中,加密机常用于对固件进行签名,以增加固件的安全性和完整性。以下是几个可能的使用场景: 固件验证:当汽车制造商或供应商需要对固件进行验证时,可以使用加密机来验证固件的来源和完整性。通过使用公钥和私…...
istio介绍(一)
1. 概念 1.1 虚拟服务 虚拟服务提供流量路由功能,它基于 Istio 和平台提供的基本的连通性和服务发现能力,让您配置如何在服务网格内将请求路由到服务 示例: apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:nam…...
基于鱼鹰优化的BP神经网络(分类应用) - 附代码
基于鱼鹰优化的BP神经网络(分类应用) - 附代码 文章目录 基于鱼鹰优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.鱼鹰优化BP神经网络3.1 BP神经网络参数设置3.2 鱼鹰算法应用 4.测试结果:5.M…...
【LeetCode】145. 二叉树的后序遍历 [ 左子树 右子树 根结点]
题目链接 文章目录 Python3方法一: 递归 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二: 迭代 ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法三: Morris ⟮ O ( n ) 、 O ( 1 ) ⟯ \lgroup O(n)、O(1) \rgroup ⟮O(n)、O(1)⟯写…...
Unity之ShaderGraph如何实现触电电流效果
前言 之前使用ASE做过一个电流效果的shader,今天我们通过ShaderGraph来实现一个电流效果。 效果如下: 关键节点 Simple Noise:根据输入UV生成简单噪声或Value噪声。生成的噪声的大小由输入Scale控制。 Power:返回输入A的结果…...
【微信小程序调试工具试用】
【微信小程序调试工具试用】 试用大佬开发的dll拿到某物小程序sign签名 (过于简单 大佬勿喷)本次工具分享到此结束 什么是爬虫逆向? 试用大佬开发的dll拿到某物小程序sign签名 (过于简单 大佬勿喷) 1 如图 下面小程序…...
机械生产ERP管理系统
机械生产ERP管理系统 功能介绍: 生产管理: 1.灵活自定义生产车间、成本费用类型、成本项目; 2.方便直观的物料清单(BOM),并可以逆向展开; 3.科学实用的物料需求计划(MRP)&#x…...
Vue 模板字符串碰到script无法识别,报错Parsing error: Unterminated template.
需求: 将js代码完整的显示在界面上,包括标签 代码如下: 报错信息如下: 我们在上图中可以看到模板字符串加入了script标签后会报错 原因:运行JS的时候由上至下,先识别模板字符串里面的script标签…...
AWS SAP-C02教程5--基础中间件
在AWS中除了计算、存储、网络之外,还有一些组件非常重要,包括基础组件、消息队列组件、日志组件、编排组件等,接下来就通过分成几个不同类别(这个分类按照AWS的大概分类进行分类,并无统一标准,只是具备一定相同功能归类在一起方便记忆) 目录 1 消息中间件1.1 SQS1.1.1 …...
Windows 11 LTSC 24H2 微软商店一键安装终极指南:3分钟解决应用商店缺失问题
Windows 11 LTSC 24H2 微软商店一键安装终极指南:3分钟解决应用商店缺失问题 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否在使用…...
从压力导丝到AI计算:一文看懂FFR(冠状动脉血流储备分数)的技术演进与未来
从压力导丝到AI计算:冠状动脉血流储备分数的技术革命与临床突破 在心血管介入领域,没有哪个生理学参数像FFR(冠状动脉血流储备分数)这样彻底改变了临床决策路径。1993年荷兰学者Nico Pijls首次提出这个概念时,可能未曾…...
3分钟掌握免费开源神器:B站视频转文字一键搞定
3分钟掌握免费开源神器:B站视频转文字一键搞定 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动整理B站视频笔记而烦恼吗?想…...
如何快速批量下载抖音视频:5个高效技巧与终极配置指南
如何快速批量下载抖音视频:5个高效技巧与终极配置指南 【免费下载链接】douyinhelper 抖音批量下载助手 项目地址: https://gitcode.com/gh_mirrors/do/douyinhelper 抖音批量下载助手是一款专业的Python自动化工具,专为需要批量获取抖音视频内容…...
如何处理超出范围的插入_未定义MAXVALUE分区导致的ORA-14400报错
ORA-14400 表示插入数据的分区键超出所有现有RANGE分区边界,主因是未设置MAXVALUE分区;可通过查询user_tab_partitions中high_value确认,修复需SPLIT或EXCHANGE分区,根治方案是建表时即包含MAXVALUE并启用INTERVAL自动分区。ORA-1…...
知识图谱(BILSTM+CRF项目完整实现、训练结果优化方向(面试))【第八章】
一、训练、评估模型 训练函数基本步骤: 1.构建数据迭代器Dataloader(包括数据处理与构建数据源Dataset) 2.实例化模型 3.实例化损失函数对象 4.实例化优化器对象 5.定义打印日志参数 6.开始训练 6.1 实现外层大循环epoch 6.2 将模型设置为训练模式 6.3 内部…...
第8天 合并两个有序数组
今日任务:88. 合并两个有序数组 理解其中的逆向思维,提交第二周学习小结 题意: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 num…...
在Vmware嵌套的CentOS 7里搭KVM:从虚拟化检测到桥接网络避坑全记录
在VMware嵌套的CentOS 7中部署KVM:从虚拟化检测到网络配置实战指南 当我们需要在有限硬件资源下构建复杂的虚拟化测试环境时,嵌套虚拟化技术提供了绝佳的解决方案。本文将带您深入探索如何在VMware Workstation创建的CentOS 7虚拟机中,成功部…...
基于 Qt C++ 开发一套集成阿里通义千问大模型的多模态智能应用终端
你想要基于 Qt C++ 开发一套**集成阿里通义千问大模型的多模态智能应用终端**,支持**图文音视频理解**,适配电商客服、工业质检、智能创作等阿里生态全场景,并具备高并发、高稳定性(日均调用超10亿次级别的架构设计)。 下面我给你一套**可直接落地的 Qt + 通义千问多模态…...
ESP32-S3 SPI屏幕性能优化实战:如何将LVGL帧率从卡顿提升到23FPS
ESP32-S3 SPI屏幕性能优化实战:如何将LVGL帧率从卡顿提升到23FPS 当你在ESP32-S3上成功移植LVGL并看到第一个界面时,那种成就感无与伦比。但很快,现实会给你当头一棒——动画卡顿、界面迟滞,用户体验直线下降。这不是LVGL的问题&a…...
