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


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

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

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

那么首先去了解一下lombok中我們用的最多的注解@Data

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

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

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

說白了,它就是很多注解的集合,並且生成的get,set,equals、hashCode都是針對於自己的,如果想同時把父類的也加進來怎么辦呢,其實官網解釋已經給出了說明,就是顯示的指定莫些注解的callSuper參數,

如果說子類和父類要並為同一個對象進行toString,equals判斷那么在類上加入:

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

官網很重要


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM