lombok @data lombok( 三 )


例如为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注解带来的问题和解决方案

秒懂生活扩展阅读