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注解
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在继承类上的使用的主要内容,如果未能解决你的问题,请参考以下文章