lombok在继承类上的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lombok在继承类上的使用相关的知识,希望对你有一定的参考价值。

参考技术A 在普通的Java程序里,父类引用指向子类对象时,该引用只能调用父类中定义的方法和变量

例如为HTTP请求创建一个基类CommonResponse

再创建一个子类FileUploadResponse

Test Case

结果

首先, getFilePath() 的方法是不存在于这个对象上的
且 getFileOriName() 通过重写成功调用了父类中不存在的变量

这个时候如果用jackson将对象转换为json string,转换成的对象会因为get方法的不同而有所不同,如果父类和子类都不写getter,则jackson会报错。

而如果写了 getMsg() 和 getFileOriName() ,返回的对象则会为 msg 和 fileOriName 的组合。

为父类和子类对象都加上Lombok的@Data标签后,发现子类对父类的重写都依然存在

修改父类

修改子类

Test Case

结果

我们可以注意到另一件事情,在Lombok默认的@ToString方法里,是不带父类变量的
Test Case

结果

但如果使用Jackson将对象转化为json string,子类继承父类的变量也会全部被打印出来
Test Case

结果

如果想要在@ToString时打印父类变量,或者在比较时使用父类变量,则需要加上 callSuper = true 的注释
修改子类

重跑Test结果

References
父类引用指向子类对象

搜索资料过程中发现的有用的避雷贴
Lombok插件安装与使用说明
浅析JavaBean继承后重写父类属性和lombok注解带来的问题和解决方案

01-在实体类上加了lombok的@Data注解

01-在实体类上加了lombok的@Data注解,却无法使用getter/setter方法的问题

1.lomok注解简介
序号注解功能
1@NonNull帮助我们避免空指针
2@Cleanup自动帮我们调用close方法
3@Getter自动生成Getter方法
4@Setter自动生成Setter方法
5@NoArgsConstructor自动生成无参构造器
6@AllArgsCOnstructor自动生成全参构造器
7@Data①自动为所有字段添加@ToString、@EqualsAndHashCode@Getter、@Setter方法。
②为非final字段添加@Setter、@RequiredArgsConstructor
8@ToString自动生成toString方法

2.解决问题

一般是没有下载 lombok插件的原因。

技术图片

技术图片

从上图可以发现没有getter和setter方法等。

到idea的setting设置中找到插件plugins下载lombok插件重启idea即可。

技术图片

重启后,拥有了想要的效果。










以上是关于lombok在继承类上的使用的主要内容,如果未能解决你的问题,请参考以下文章

Myeclipseeclipse安装lombok

带有继承的@Data注释lombok上的警告等于/哈希码

01-在实体类上加了lombok的@Data注解

lombok

Lombok 官方文档

Lombok-@Data