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源代碼;

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
從零開始讓你的Spring?Boot項目跑在Linux服務器
這篇文章主要給大家介紹了如何從零開始讓你的Spring?Boot項目跑在Linux服務器的相關資料,由于springboot是內嵌了tomcat,所以可以直接將項目打包上傳至服務器上,需要的朋友可以參考下2021-11-11
Java數(shù)據(jù)結構之鏈表實現(xiàn)(單向、雙向鏈表及鏈表反轉)
這篇文章主要給大家介紹了關于Java數(shù)據(jù)結構之鏈表實現(xiàn)的相關資料,其中包括單向鏈表、雙向鏈表及鏈表反轉的實現(xiàn)代碼,需要的朋友可以參考下2021-06-06
如何解決創(chuàng)建maven工程時,產(chǎn)生“找不到插件的錯誤”問題
這篇文章主要介紹了如何解決創(chuàng)建maven工程時,產(chǎn)生“找不到插件的錯誤”問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12

