切換語言為:簡體

lombok的@Data註解的作用

  • 爱糖宝
  • 2024-10-31
  • 2049
  • 0
  • 0

@Data 註解是 Lombok 提供的一個非常實用的註解。它可以自動為類生成常用的功能,減少樣板程式碼的編寫。具體來說,使用 @Data 註解會自動為你的類生成以下元素:

1. Getter 和 Setter 方法

對於類中的每個欄位,Lombok 會自動生成對應的 getter 和 setter 方法。這意味著你無需手動編寫這些方法,從而簡化了程式碼。

2. toString 方法

@Data 自動生成 toString() 方法,這樣你可以方便地列印物件的字串表示,包含所有欄位的資訊。

3. equals 和 hashCode 方法

Lombok 會生成 equals()hashCode() 方法,以便於物件之間的比較和集合中元素的唯一性檢查。這些方法會基於物件的欄位值進行比較。

4. 構造器

@Data 會生成一個全域性的構造器(即包含所有欄位的構造方法),允許你以一種簡潔的方式建立物件。

示例程式碼

以下是一個示例,展示了 @Data 註解的用法:

import lombok.Data;

@Data
public class User {
    private String name;
    private int age;
}

自動生成的方法

使用 @Data 註解後,Lombok 會自動生成的程式碼大致如下:

public class User {
    private String name;
    private int age;

    // Getter 和 Setter 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // toString 方法
    @Override
    public String toString() {
        return "User{name='" + name + "', age=" + age + "}";
    }

    // equals 和 hashCode 方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof User)) return false;
        User user = (User) o;
        return age == user.age && Objects.equals(name, user.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    // 全引數構造器
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

總結

  • @Data 註解是一個強大的工具,可用來簡化類的設計,減少樣板程式碼。

  • 它自動生成 getter、setter、toStringequalshashCode 方法,提供全引數的構造器。

  • 適用於需要簡單 Java Bean 類的場景,尤其是在涉及到資料封裝時。

使用 Lombok 的 @Data 註解後,可以使你的程式碼更加簡潔和易讀,提高開發效率。


作者:國謙
連結:https://juejin.cn/post/7431606960553426944

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.