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)

官网很重要

posted @ 2019-01-04 16:57  少年喝了这个java吧  阅读(8456)  评论(0编辑  收藏  举报