如何解決@Data和@Builder的沖突問題
一、問題描述
當(dāng)在一個(gè)實(shí)體類中加上了@Data和@Builder兩個(gè)注解之后,創(chuàng)建該實(shí)體類的實(shí)例就無法使用無參構(gòu)造方法來創(chuàng)建了(就是new Person()這個(gè)方法報(bào)異常)
如下圖:
Person實(shí)體類:
package com.muyichen.demo.builder; import lombok.Builder; import lombok.Data; import java.util.Date; @Data @Builder public class Person { private String name; private Integer age; private String gender; private Date birth; }
異常:沒有無參構(gòu)造
二、如何解決該問題
方法1
手動(dòng)添加無參構(gòu)造,使用@Tolerate注解
package com.muyichen.demo.builder; import lombok.Builder; import lombok.Data; import lombok.experimental.Tolerate; import java.util.Date; @Data @Builder public class Person { private String name; private Integer age; private String gender; private Date birth; @Tolerate public Person() { } }
這種解決辦法是將無參構(gòu)造與buider中構(gòu)造函數(shù)的沖突做了兼容。
方法2
直接添加兩個(gè)注解@AllArgsConstructor、@NoArgsConstructor
package com.muyichen.demo.builder; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @Data @Builder @AllArgsConstructor @NoArgsConstructor public class Person { private String name; private Integer age; private String gender; private Date birth; }
我比較推薦使用這個(gè)方法,這個(gè)方法添加了無參構(gòu)造和所有有參數(shù)構(gòu)造,這樣可以保證以后使用類型轉(zhuǎn)換映射的時(shí)候不會(huì)出問題。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java簡(jiǎn)易計(jì)算器程序設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易計(jì)算器程序設(shè)計(jì)的相關(guān)參考資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-10-10Spring Boot項(xiàng)目中定制PropertyEditors方法
在本篇文章里小編給大家分享的是一篇關(guān)于Spring Boot定制PropertyEditors的知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2019-11-11如何將maven項(xiàng)目導(dǎo)出jar包(最簡(jiǎn)單方法)
大家都知道對(duì)于將maven項(xiàng)目導(dǎo)出jar包有好幾種方式,本文給大家分享一種方式最容易且最方便,感興趣的朋友跟隨小編一起看看吧2023-11-11面向?qū)ο蠛兔嫦蜻^程的區(qū)別(動(dòng)力節(jié)點(diǎn)java學(xué)院整理)
很多朋友不清楚面向?qū)ο蠛兔嫦蜻^程有什么區(qū)別,接下來小編給大家整理了關(guān)于面向?qū)ο蠛兔嫦蜻^程的區(qū)別講解,感興趣的朋友可以參考下2017-04-04Java 時(shí)間轉(zhuǎn)換的實(shí)例代碼
下面小編就為大家?guī)硪黄狫ava 時(shí)間轉(zhuǎn)換的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07Java字節(jié)碼增強(qiáng)技術(shù)知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理的是一篇關(guān)于Java字節(jié)碼增強(qiáng)技術(shù)知識(shí)點(diǎn)詳解內(nèi)容,有興趣的朋友可以跟著學(xué)習(xí)下。2021-08-08Java批量從svn導(dǎo)出多個(gè)項(xiàng)目代碼實(shí)例
這篇文章主要介紹了java批量從svn導(dǎo)出多個(gè)項(xiàng)目代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03