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 …...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...