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最终场,和适当的toString
,equals
并hashCode
实现涉及类的字段和初始化所有final字段,以及不具有初始已打上所有非最终场构造@NonNull
,以保证该领域从来都不是空值。
@Data
就像具有隐式@Getter
,@Setter
,@ToString
,@EqualsAndHashCode
和@RequiredArgsConstructor
在类注解(不同之处在于没有构造将生成如果已经存在任何明确写入构造函数)。但是,这些注释的参数(例如callSuper
,includeFieldNames
和exclude
)不能设置@Data
。如果您需要为这些参数中的任何一个设置非默认值,只需显式添加这些注释; @Data
足够聪明,可以遵循那些注释。
说白了,它就是很多注解的集合,并且生成的get,set,equals、hashCode都是针对于自己的,如果想同时把父类的也加进来怎么办呢,其实官网解释已经给出了说明,就是显示的指定莫些注解的callSuper参数,
如果说子类和父类要并为同一个对象进行toString,equals判断那么在类上加入:
1 @ToString(callSuper = true) 2 @EqualsAndHashCode(callSuper = true)
官网很重要