lombok使用中出現繼承關係的對象時,出現的問題及解決辦法

在Springboot中使用lombok使代碼更加的優雅 https://www.projectlombok.org/ide

在idea中繼承lombok插件就不說了函數

今天出現的問題是lombok在繼承關係時,toString方法沒法打印基類屬性,比較對象equals的時候也會略過基類屬性,只會比較子類的屬性值是否全等ui

那麼首先去了解一下lombok中咱們用的最多的註解@Dataidea

這是在官網上截取的一段@Data的解釋:spa

@Data是一個方便的快捷方式註釋,它捆綁了@ToString@EqualsAndHashCode@Getter/@Setter@RequiredArgsConstructor它們的特徵:換句話說,@Data生成一般與簡單POJO(普通舊Java對象)和bean相關聯的全部樣板:全部字段的getter,全部非的setter最終場,和適當的toStringequalshashCode實現涉及類的字段和初始化全部final字段,以及不具備初始已打上全部非最終場構造@NonNull,以保證該領域歷來都不是空值。插件

@Data就像具備隱式@Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor在類註解(不一樣之處在於沒有構造將生成若是已經存在任何明確寫入構造函數)。可是,這些註釋的參數(例如callSuperincludeFieldNamesexclude)不能設置@Data若是您須要爲這些參數中的任何一個設置非默認值,只需顯式添加這些註釋; @Data足夠聰明,能夠遵循那些註釋。code

說白了,它就是不少註解的集合,而且生成的get,set,equals、hashCode都是針對於本身的,若是想同時把父類的也加進來怎麼辦呢,其實官網解釋已經給出了說明,就是顯示的指定莫些註解的callSuper參數,對象

若是說子類和父類要併爲同一個對象進行toString,equals判斷那麼在類上加入:blog

1 @ToString(callSuper = true)
2 @EqualsAndHashCode(callSuper = true)

官網很重要繼承

相關文章
相關標籤/搜索