lombok中使用@Builder構造器模式時的默認值問題

這里寫自定義目錄標題

  • 問題case
  • 原因
  • 解決方案

文章參考來源:https://chenyongjun.vip/articles/107

問題case

Lombok 使用廣泛,這里分享一個 Lombok @Builder 小 case,今天自己踩了坑。

@Data
@Builder
public class User {private String name = "kitty";private int age = 20;private boolean enabled = true;public static void main(String[] args) {System.out.println(User.builder().build());}
}

輸出結果卻是:User(name=null, age=0, enabled=false),自行設置的值全部失效。

原因

使用User.builder().build()方法構造對象時,如果不主動賦值的情況下會被賦初值,而不會使用我們代碼中的初值。

解決方案

可以使用 @Builder.Default 標記屬性,以保留默認值。

@Data
@Builder
public class User {@Builder.Defaultprivate String name = "kitty";@Builder.Defaultprivate int age = 20;@Builder.Defaultprivate boolean enabled = true;public static void main(String[] args) {System.out.println(User.builder().build());}
}

輸出結果為:User(name=kitty, age=20, enabled=true)

一般領域對象都會使用基礎數據類型的包裝類,很少使用基礎數據類型,也很少給初始值,不容易發現。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164735.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MLP 有哪些可學習的參數

多層感知機(MLP)的參數是需要在訓練過程中學習的。MLP是一種前饋神經網絡,其結構包括輸入層、多個隱藏層和輸出層。在訓練過程中,MLP通過反向傳播算法來調整網絡的權重,以最小化預測值與實際值之間的誤差。 MLP的學習…

安卓開發——Android Studio常見報錯與解決方法

1. No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-android 這個錯誤是由于較新版本的NDK的./toolchains目錄中沒有arm-linux-androideabi文件,解決辦法是從舊的NDK版本里面復制到自己的NDK的版本里面,就可以了。 打…

WSL登錄時提示nsenter: cannot open /proc/320/ns/time: No such file or directory的解決辦法

在登錄 WSL 的 Ubuntu 時,不僅要求 root 權限,還登錄失敗,提示“nsenter: cannot open /proc/320/ns/time: No such file or directory”。 解決辦法是在 powershell 中執行 “wsl – sudo vi /etc/profile”命令,刪除文件內容&a…

JavaWeb——感謝尚硅谷官方文檔

JavaWeb——感謝尚硅谷官方文檔 XML一、xml簡介二、xml的語法1、文檔申明2、xml注釋3、xml元素4、xml屬性5、xml語法規則 三、xml解析技術1、使用dom4j解析xml Tomcat一、JavaWeb的概念二、web資源的分類三、常見的web服務器四、Tomcat的使用1、安裝2、Tomcat的目錄介紹3 啟動T…

初識Java 18-3 泛型

目錄 邊界 通配符 編譯器的能力范疇 逆變性 無界通配符 捕獲轉換 本筆記參考自: 《On Java 中文版》 邊界 在泛型中,邊界的作用是:在參數類型上增加限制。這么做可以強制執行應用泛型的類型規則,但還有一個更重要的潛在效果…

如何在AD的PCB板做矩形槽孔以及如何倒圓弧角

Altium Designer 22下載安裝教程-CSDN博客 如何在AD上創建完整的項目-CSDN博客 開始前,請先安裝后AD,并創建好項目。 目錄 1. 如何在AD的PCB板做矩形槽孔 2. 如何在AD的PCB板倒圓弧角 1. 如何在AD的PCB板做矩形槽孔 首先,我們進入上面創…

PTA 7-9 堆棧操作合法性

7-9 堆棧操作合法性 分數 20 全屏瀏覽題目 作者 DS課程組 單位 浙江大學 假設以S和X分別表示入棧和出棧操作。如果根據一個僅由S和X構成的序列,對一個空堆棧進行操作,相應操作均可行(如沒有出現刪除時棧空)且最后狀態也是棧空…

2023年11個最佳免費WordPress主題

如果您剛剛開始使用 WordPress,您可能會很自然地認為,只要免費的WordPress主題看起來像您想要的網站主題,那么它就很合適。不幸的是,事情并沒有那么簡單。這就是為什么在今天的文章中,我們概述了一份可靠的標準清單&am…

某基金公司趙哥“逆襲”了!!!

趙哥,在上海一家基金公司做運維主管。 平時工作的首要任務,就是保障公司各項信息系統的安全運行。 萬一系統運行中出現了一些重要問題,他還要負責進行調查、記錄與匯報... 總之,責任很重,該說不說,搞不好…

Java互聯網+公立醫院績效考核源碼

一、建設信息化醫院績效考核的意義 1.提高考核效率:通過信息化手段,可以將績效考核數據自動采集、整理、分析和報告,大大提高了考核效率,減少了人工干預和錯誤率。 2.增強考核公正性:信息化考核可以減少人為因素的干…

Electronica上海 Samtec 驗證演示 | FireFly?Micro Flyover System?

摘要/前言 在圓滿結束的2023慕尼黑上海電子展上,Samtec虎家團隊為觀眾帶來了前所未有的豐富體驗:產品展示、采訪、Demo演示、抽獎互動~ 尤其是Demo演示,虎家工程師FAE Marcus為大家帶來了數個精彩的產品與系統講解演示。其中更不乏合作伙伴…

Windows、VMware問題集合

Windows、VMware問題集合 一. Windows11安裝VMware17提升虛擬機性能1. 桌面右擊圖標點擊屬性——>兼容性,找到“以管理員身份運行此程序”勾選,最后點擊確定即可。2. 關閉win11的內核隔離功能。 二. VMware虛擬機報錯(虛擬化性能計數器需要…

C語言——求分段函數 y=f(x)的值

求分段函數 yf(x)的值,f(x)的表達式如下: #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int x,y;printf("請輸入x的值&#xff1a;");scanf("%d",&x);if(x>5){yx3;}else if(x>0 && x<5){y0;}elsey2*x30;pr…

Python 基礎【四】--數據類型-字符串【2023.11.23】

1 .定義 字符串是 Python 的一種數據類型&#xff0c;它可以通過單引號 ‘、雙引號 "、三引號 ‘’’ 或 “”"來定義。 aabcd bacsdcd c"""accsfv""" print(a) print(b) print(c)2 .基本操作 訪問單個字符 注意&#xff1a;從0開始…

Java_注解

1. 簡介 在Java中&#xff0c;注解&#xff08;Annotation&#xff09;是一種元數據形式&#xff0c;它為代碼添加了額外的信息&#xff0c;這些信息可以被編譯器、工具、框架或運行時環境使用。注解提供了一種聲明性的方式來向程序中添加元數據&#xff0c;而不需要修改程序的…

Harmony Ble藍牙App(二)連接與發現服務

Ble藍牙App&#xff08;二&#xff09;連接與發現服務 前言正文一、BlePeripheral回調二、連接和斷連三、連接狀態回調四、發現服務五、服務提供者六、顯示服務七、源碼 前言 在上一篇中我們進行掃描設備的處理&#xff0c;本文中進行連接和發現服務的數據處理&#xff0c;運行…

Mysql數據庫 18.Mysql SQL優化

SQL優化 一、插入優化 多條插入語句&#xff0c;影響執行效率 優化方案 1、批量插入&#xff1a; 在一條insert語句中多條數據&#xff0c;但是如果數據量過大&#xff0c;也不能完全使用一條語句語句&#xff0c;建議數據量為一次性插入1000條以下的數據 如果數據量多大&…

plantUML學習與實戰

背景 在日常工作或者生活中&#xff0c;使用交互圖來描述想法&#xff0c;往往相對于文字來說&#xff0c;可讀性更高&#xff0c;同時一定程度上可以提高溝通效率&#xff0c;但是苦于&#xff0c;不想對一堆控件拖拖拉拉&#xff0c;本人就是一個很討厭畫圖&#xff0c;但是…

【華為OD題庫-036】跳格子2-java

題目 小明和朋友玩跳格子游戲&#xff0c;有n個連續格子組成的圓圈&#xff0c;每個格子有不同的分數&#xff0c;小朋友可以選擇從任意格子起跳&#xff0c;但是不能跳連續的格子&#xff0c;不能回頭跳&#xff0c;也不能超過一圈:給定一個代表每個格子得分的非負整數數組&am…

Python---把函數的返回值作為另外一個函數的參數

def test1():return 50def test2(num):print(num)# 1. 保存函數test1的返回值 result test1()# 2.將函數返回值所在變量作為參數傳遞到test2函數 test2(result) # 50