如何解決@Data和@Builder的沖突問題
一、問題描述
當(dāng)在一個實(shí)體類中加上了@Data和@Builder兩個注解之后,創(chuàng)建該實(shí)體類的實(shí)例就無法使用無參構(gòu)造方法來創(chuàng)建了(就是new Person()這個方法報異常)
如下圖:
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
手動添加無參構(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
直接添加兩個注解@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òu)造和所有有參數(shù)構(gòu)造,這樣可以保證以后使用類型轉(zhuǎn)換映射的時候不會出問題。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot項目中定制PropertyEditors方法
在本篇文章里小編給大家分享的是一篇關(guān)于Spring Boot定制PropertyEditors的知識點(diǎn)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2019-11-11
面向?qū)ο蠛兔嫦蜻^程的區(qū)別(動力節(jié)點(diǎn)java學(xué)院整理)
很多朋友不清楚面向?qū)ο蠛兔嫦蜻^程有什么區(qū)別,接下來小編給大家整理了關(guān)于面向?qū)ο蠛兔嫦蜻^程的區(qū)別講解,感興趣的朋友可以參考下2017-04-04
Java字節(jié)碼增強(qiáng)技術(shù)知識點(diǎn)詳解
在本篇文章里小編給大家整理的是一篇關(guān)于Java字節(jié)碼增強(qiáng)技術(shù)知識點(diǎn)詳解內(nèi)容,有興趣的朋友可以跟著學(xué)習(xí)下。2021-08-08
Java批量從svn導(dǎo)出多個項目代碼實(shí)例
這篇文章主要介紹了java批量從svn導(dǎo)出多個項目代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03

