@Data加在子类上,子类无法获取父类的属性
1、问题描述
我的子类继承父类,并在子类上加了@Data注解。但在程序运行时,输出的结果只有我在子类中定义的属性,父类的属性没有输出。
这是我定义的子类:
这个是子类继承的父类:
这个是输出结果:
可以看到,只输出了子类的定义的taskId,父类的属性全无!!!
2、产生原因
@Data是会在编译时自动为实体类添加@Getter @Setter toString等方法
我看了一下编译好的.class文件
@Data注解修饰的TaskBO类生成的toString()方法只有子类中的taskId,因此输出结果没有父类属性,只有taskId。
我看官方文档对于@Data这个注解的说明中并没有说@Data可以作用于类的父类。
@Data的作用域仅局限于当前类的属性。
3、解决方法
添加@ToString(callSuper = true)
callSuper会把父类的属性作为一部分连同子类的属性一块生成toString
即:
4、总结
无
5、参考资料
lombok的使用和原理 - 张随笔 - 博客园 (cnblogs.com)
@Data注解不会涉父类的成员的坑,需要加callSuper = true的参数_沙漏-CSDN博客_callsuper=false
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!