Java之注解@Data和@ToString(callSuper=true)解讀
更新時間:2024年11月06日 09:48:03 作者:A_bad_horse
在使用Lombok庫的@Data注解時,若子類未通過@ToString(callSuper=true)注明包含父類屬性,toString()方法只打印子類屬性,解決方法:1. 子類重寫toString方法;2. 子類使用@Data和@ToString(callSuper=true),父類也應使用@Data
問題復現(xiàn)
@Data public class People { private String height; private String weight; }
@Data public class Student extends People { private String name; }
public class Test { public static void main(String[] args) { Student student = new Student(); student.setHeight("180cm"); student.setWeight("65kg"); student.setName("Jack"); System.out.println(student.toString()); } }
運行代碼后,打印如下:
Student(name=Jack)
Root Cause
如果domain中沒有重寫toString, 且使用了@Data注解, 調用toString時只會打印子類本身的屬性值, 如果想要打印父類的屬性:
- 方式一:重寫tostring
- 方式二:子類加上@Data和@ToString(callSuper = true)兩個注解, 父類也使用注解@Data
解決方案
@Data @ToString(callSuper = true) public class Student extends People { private String name; }
行代碼后,打印如下:
Student(super=People(height=180cm, weight=65kg), name=Jack)
lombok 使用@Data時會重寫toString(),查看@Data源代碼;
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
從零開始讓你的Spring?Boot項目跑在Linux服務器
這篇文章主要給大家介紹了如何從零開始讓你的Spring?Boot項目跑在Linux服務器的相關資料,由于springboot是內嵌了tomcat,所以可以直接將項目打包上傳至服務器上,需要的朋友可以參考下2021-11-11Java數據結構之鏈表實現(xiàn)(單向、雙向鏈表及鏈表反轉)
這篇文章主要給大家介紹了關于Java數據結構之鏈表實現(xiàn)的相關資料,其中包括單向鏈表、雙向鏈表及鏈表反轉的實現(xiàn)代碼,需要的朋友可以參考下2021-06-06如何解決創(chuàng)建maven工程時,產生“找不到插件的錯誤”問題
這篇文章主要介紹了如何解決創(chuàng)建maven工程時,產生“找不到插件的錯誤”問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12