如何解決@Data和@Builder的沖突問題
一、問題描述
當在一個實體類中加上了@Data和@Builder兩個注解之后,創(chuàng)建該實體類的實例就無法使用無參構(gòu)造方法來創(chuàng)建了(就是new Person()這個方法報異常)
如下圖:
Person實體類:
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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring Boot項目中定制PropertyEditors方法
在本篇文章里小編給大家分享的是一篇關于Spring Boot定制PropertyEditors的知識點內(nèi)容,有需要的朋友們可以參考學習下。2019-11-11面向?qū)ο蠛兔嫦蜻^程的區(qū)別(動力節(jié)點java學院整理)
很多朋友不清楚面向?qū)ο蠛兔嫦蜻^程有什么區(qū)別,接下來小編給大家整理了關于面向?qū)ο蠛兔嫦蜻^程的區(qū)別講解,感興趣的朋友可以參考下2017-04-04