自定義建構式的限制是,一定要以this()呼叫某個建構式,而建構式的呼叫鏈,最後呼叫了標準建構式,這是為了確保資料的完整性。
如果你自定義標準建構式,因為資料每個欄位對應的值域都是private final,建構式中就必須明確地設定值,不過當record欄位定義與建構式的參數重複了,你可以定義精簡建構式。
精簡建構式的內容,會被安插至編譯器產生的標準建構式開頭,編譯器會為record類別自動生成與值域名稱對應的方法,也可以自行定義其他方法,不過通常自定義方法,是為了資料間的計算、轉換等,例如點的位移、點與點間距離計算、轉換資料格式等。
因為靜態成員基本上只是以類別名稱作為名稱空間,相對與實例的狀態無關,record類別可以定義靜態成員。
與座標計算相關的方法,可以抽取至Point類別,若原本Circle與Square有些方法必須使用x、y進行運算,重構後可透過Point實例的x、y方法取得資料。