Java之注解@Data和@ToString(callSuper=true)解讀
問題復(fù)現(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注解, 調(diào)用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源代碼;

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java?synchornized與ReentrantLock處理并發(fā)出現(xiàn)的錯誤
synchronized機制提供了對每個對象相關(guān)的隱式監(jiān)視器鎖,并強制所有鎖的獲取和釋放都必須在同一個塊結(jié)構(gòu)中。當獲取了多個鎖時,必須以相反的順序釋放。即synchronized對于鎖的釋放是隱式的2023-01-01
微信支付java版V3驗證數(shù)據(jù)合法性(Deom)
這篇文章主要介紹了微信支付java版V3驗證數(shù)據(jù)合法性(Deom)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09
實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之設(shè)置微服務(wù)接口開發(fā)模塊
這篇文章主要為大家介紹了實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之接口開發(fā)醫(yī)院設(shè)置微服務(wù)模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
JAVA簡單鏈接Oracle數(shù)據(jù)庫 注冊和登陸功能的實現(xiàn)代碼
這篇文章主要介紹了JAVA鏈接Oracle并實現(xiàn)注冊與登錄功能的代碼實例,有需要的朋友可以參考一下2014-01-01

