欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Lombok子類繼承父類,父類屬性不生效問題及解決

 更新時間:2024年10月25日 09:35:58   作者:寫....寫個大西瓜  
在使用Lombok庫時,若子類繼承父類,父類的屬性可能不會自動生效,為解決此問題,可通過在父類上添加@Getter和@Setter注解,或使用@SuperBuilder注解來確保父類屬性在子類中有效,同時,需注意確保Lombok版本一致且正確配置了相關(guān)插件

使用Lombok子類繼承父類,父類屬性不生效

子類增加:

@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Data
@Entity
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SysRights extends BaseEntity {
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    private String rightsId;
    private String rightsName;
    private String rightsUrl;
    private String rightsIcon;
}

問題解決~~~~

Lombok 繼承時應(yīng)注意的點

lombok項目的產(chǎn)生就是為了省去我們手動創(chuàng)建getter和setter等基本方法的麻煩,它能夠在我們編譯源碼的時候自動幫我們生成getter和setter等方法。

即它最終能夠達到的效果是:

在源碼中沒有g(shù)etter和setter方法,但是在編譯生成的字節(jié)碼文件中有g(shù)etter和setter方法

繼承時的@Data

我們知道@Data注解在類,為類的所有字段注解@ToString、@EqualsAndHashCode、@Getter的便捷方法,同時為所有非final字段注解@Setter。

要注意@EqualsAndHashCode注解與@ToString注解默認情況下是忽略父類的成員變量的,測試代碼如下:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class School {
 
  public int id;
 
  public String name;
 
  public String age;
 
}
 
@Data
class ShangHai extends School {
  private String type;
}
 
 
class test {
 
  public static void main(String[] args) {
    ShangHai shangHai = new ShangHai();
    shangHai.setId(1);
    shangHai.setName("上海大學(xué)");
    shangHai.setType("A");
 
    ShangHai shangHai2 = new ShangHai();
    shangHai2.setId(2);
    shangHai2.setName("華東師范");
    shangHai2.setType("A");
 
    System.out.println(shangHai.equals(shangHai2));
    System.out.println(shangHai.toString());
    System.out.println(shangHai2.toString());
 
  }
}

它的打印結(jié)果是:

true
ShangHai(type=A)
ShangHai(type=A)

在此可以發(fā)現(xiàn),上述的兩個實例沒有對比父類的成員變量是否相同,僅僅對比的type字段的值,所以是true。同理,toString方法是不會打印父類的成員的。

使父類成員變量參與到邏輯中

這個解決很簡單,僅僅需要給注解帶上一個參數(shù):

@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
class ShangHai extends School {
  private String type;
}

打印結(jié)果

true
ShangHai(super=School(id=1, name=上海大學(xué), age=null), type=A)
ShangHai(super=School(id=2, name=華東師范, age=null), type=A)

注意:

由上述的代碼演示,我們可以知道,在類繼承的情況時應(yīng)注意@Data注解不會涉父類的成員的坑,需要加callSuper = true的參數(shù)。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot post接口接受json時,轉(zhuǎn)換為對象時,屬性都為null的解決

    springboot post接口接受json時,轉(zhuǎn)換為對象時,屬性都為null的解決

    這篇文章主要介紹了springboot post接口接受json時,轉(zhuǎn)換為對象時,屬性都為null的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 啟動SpringBoot報錯Input length = 1問題及解決

    啟動SpringBoot報錯Input length = 1問題及解決

    這篇文章主要介紹了啟動SpringBoot報錯Input length = 1問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • SpringBoot+URule實現(xiàn)可視化規(guī)則引擎的方法示例

    SpringBoot+URule實現(xiàn)可視化規(guī)則引擎的方法示例

    規(guī)則引擎其實是一種組件,它可以嵌入到程序當(dāng)中,將程序復(fù)雜的判斷規(guī)則從業(yè)務(wù)代碼中剝離出來,使得程序只需要關(guān)心自己的業(yè)務(wù),而不需要去進行復(fù)雜的邏輯判斷,本文給大家介紹了SpringBoot+URule實現(xiàn)可視化規(guī)則引擎的方法示例,需要的朋友可以參考下
    2024-12-12
  • SpringBoot與Spring中數(shù)據(jù)緩存Cache超詳細講解

    SpringBoot與Spring中數(shù)據(jù)緩存Cache超詳細講解

    我們知道內(nèi)存讀取速度遠大于硬盤讀取速度,當(dāng)需要重復(fù)獲取相同數(shù)據(jù)時,一次一次的請求數(shù)據(jù)庫或者遠程服務(wù),導(dǎo)致在數(shù)據(jù)庫查詢或者遠程方法調(diào)用上小號大量的時間,最終導(dǎo)致程序性能降低,這就是數(shù)據(jù)緩存要解決的問題,學(xué)過計算機組成原理或者操作系統(tǒng)的同學(xué)們應(yīng)該比較熟悉
    2022-10-10
  • java實現(xiàn)簡單的圖書管理系統(tǒng)

    java實現(xiàn)簡單的圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單的圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java數(shù)據(jù)結(jié)構(gòu)之并查集的實現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)之并查集的實現(xiàn)

    并查集是一種用來管理元素分組情況的數(shù)據(jù)結(jié)構(gòu)。并查集可以高效地進行如下操作。本文將通過Java實現(xiàn)并查集,感興趣的小伙伴可以了解一下
    2022-01-01
  • 詳解Java ArrayList類

    詳解Java ArrayList類

    這篇文章主要介紹了Java ArrayList類的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 詳解MyBatis特性之動態(tài)SQL

    詳解MyBatis特性之動態(tài)SQL

    動態(tài) SQL 是 MyBatis 的強大特性之一,這篇文章我們將結(jié)合動態(tài)SQL完成更加復(fù)雜的 SQL 操作,文章通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Java實現(xiàn)字符串反轉(zhuǎn)的常用方法小結(jié)

    Java實現(xiàn)字符串反轉(zhuǎn)的常用方法小結(jié)

    在Java中,你可以使用多種方法來反轉(zhuǎn)字符串,這篇文章主要為大家整理了幾種常見的反轉(zhuǎn)字符串的方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • SpringBoot整合thymeleaf 報錯的解決方案

    SpringBoot整合thymeleaf 報錯的解決方案

    這篇文章主要介紹了SpringBoot整合thymeleaf 報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論