簡體   English   中英

有沒有辦法在 Eclipse 中自動生成 getter 和 setter?

[英]Is there a way to automatically generate getters and setters in Eclipse?

我正在開發一個新的Android項目 ( Java ),並創建了一個包含大量變量的對象。 由於我打算為所有這些添加 getter 和 setter,我想知道: Eclipse是否有快捷方式可以在給定的類中自動生成 getter 和 setter?

在所需類的源代碼窗口中調出上下文菜單(即右鍵單擊)。 然后選擇Source子菜單; 從該菜單中選擇Generate Getters and Setters...將出現一個向導窗口。

Source -> Generate Getters and Setters...

選擇您希望為其創建 getter 和 setter 的變量,然后單擊OK

在 Eclipse Juno 中,默認情況下, ALT+SHIFT+S,R打開 getter/setter 對話框。 請注意,您必須按所有 4 個鍵。

Right click -> Source -> Generate setters and getters

但為了更方便,我總是將它映射到ALT + SHIFT + GWindows -> Preferences -> General -> Keys

所有其他答案都只關注 IDE 級別,這些並不是生成 getter 和 setter 的最有效和最優雅的方式。 如果你有幾十個屬性,相關的 getter 和 setter 方法會讓你的類代碼非常冗長。

我曾經用來自動生成 getter 和 setter 的最好方法是在您的 java 項目中使用項目 lombok 注釋,lombok.jar 將在您編譯 java 代碼時生成 getter 和 setter 方法。

您只需關注類屬性/變量的命名和定義,lombok 將完成其余的工作。 這很容易維護您的代碼。

例如,如果要為age變量添加getter和setter方法,只需添加兩個lombok注解:

@Getter @Setter 
public int age = 10;

這相當於這樣的代碼:

private int age = 10;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

您可以在此處找到有關 lombok 的更多詳細信息: Project Lombok

生成 Getter 和 Setter 的方法 -

1)Alt + Shift + S ,然后按R
2)右擊-> Source -> Generate Getters & Setters
3) 轉到Source 菜單-> Generate Getters & Setters
4) 轉到Windows 菜單-> Preferences -> General -> Keys (Write Generate Getters & Setters on text field)
5)單擊該字段的錯誤燈泡-> 創建 getter 和 setter ...
6)Ctrl + 3並在文本字段上寫入 getters & setters 然后選擇選項 Generate Getters & Setters

如果Mac OS按 Alt+cmd+S 然后選擇 Getters & Setters

右鍵單擊-> 生成 getter 和 setter 可以很好地完成這項工作,但是如果您想在 windows 中的 eclipse 中創建鍵盤快捷鍵,您可以按照以下步驟操作:

  1. 轉到窗口 > 首選項
  2. 轉到“常規”>“鍵”
  3. “快速輔助 - 為字段創建 getter/setter”列表
  4. 在下面的“綁定”文本字段中,按住所需的鍵(在我的情況下,我使用 ALT + SHIFT + G)
  5. 點擊應用並確定
  6. 現在在您的 Java 編輯器中,選擇要為其創建 getter/setter 方法的字段,然后按您在步驟 4 中設置的快捷方式。在此窗口中點擊確定以創建方法。

希望這可以幫助!

當然。

使用“源”菜單或所選字段或類型的上下文菜單中的“生成 Getter 和 Setter”,或類型中的文本選擇來打開對話框。 生成 Getter 和 Setter 對話框顯示所選類型的所有字段的 getter 和 setter。 這些方法按類型的字段分組。

查看幫助文檔以獲取更多信息。

Mac OS 上,它是Alt+Cmd+S然后選擇“...Getters and Setters”

是的。 右鍵單擊代碼,您會看到一個彈出菜單; 有“源”,“生成getter和setter”,並在它旁邊,你可以看到快捷鍵,其鍵是Alt + Shift + S和R我的系統上。

同樣,您可以導航到該主菜單中的其他子菜單,通過鍵入適當的快捷方式,您可以直接進入子菜單而不是主上下文菜單,然后可以從菜單中選擇或鍵入另一個字母以從列表中選擇。

我更喜歡先創建私有字段

private String field;

Eclipse 將自動突出顯示變量,通過將光標定位在新變量上,按 Ctrl + 1。然后它會為您提供創建 getter 和 setter 的菜單。

我按 Ctrl + 1 是因為它對我認為您接下來想要的內容更加智能。

  • 對於所有變量ALT+SHIFT+S 然后 R 並選擇所有 按 ALT+A

  • 對於單個變量變量上點光標,然后按 CTRL+1 並從建議中選擇第二個選項

截屏

按 Alt+Shift+S+R... 然后只選擇您必須生成 Getter 或 Setter 或兩者的所有字段

有一個名為Lombok 的開源 jar,您只需添加 jar,然后使用@Getter 和 @Setter注釋您的 POJO,它將自動創建 getter 和 setter。

除此之外,我們還可以使用其他功能,例如@ToString@EqualsAndHashCode和其他一些很酷的東西,它們可以從您的應用程序中刪除普通代碼

Eclipse > 源代碼 > 生成 Getter 和 Setter

**在 Eclipse IDE 中

用於生成 setter 和 getter -> alt+shift+s+r 然后 Alt A 然后單擊確定;

只生成 getter ->alt+shift+s+r 然后按 g 然后點擊 ok 按鈕;

只生成 setter ->alt+shift+s+r 然后按 l 然后點擊 ok 按鈕;**

右鍵單擊要為其生成 getter 和 setter 的屬性,然后選擇

Source -> Generate Getters and Setters...

1)轉到Windows->首選項->常規->鍵

2) 選擇commandGenerate Getters and Setters

3) 在Binding喜歡使用的快捷鍵(如Alt+Shift+G

4)點擊申請,你就可以開始了

  1. 在 Eclipse 中打開類文件
  2. 雙擊班級名稱或突出顯示它
  3. 然后導航到 Source -> Insert Code
  4. 單擊 Getter 和 Setter

它會打開一個彈出窗口來選擇要為其生成 getter/setter 方法的字段。 選擇字段並單擊“生成”按鈕。 在此處輸入圖片說明 在此處輸入圖片說明

為您的 Pojo 使用 Project Lombok 或更好的 Kotlin。

(另外,將 Kotlin 添加到您的簡歷中 ;))

這 :

public class BaseVO {
    protected Long id;

    @Override
    public boolean equals(Object obj) {
        if (obj == null || id == null)
            return false;

        if (obj instanceof BaseVO)
            return ((BaseVO) obj).getId().equals(id);

        return false; 
    }

    @Override
    public int hashCode() {
        return id == null ? null : id.hashCode();
    }
    // getter setter here
}

public class Subclass extends BaseVO {
    protected String name;
    protected String category;
    // getter setter here
}

會變成這樣:

open class BaseVO(var id: Long? = null) {

    override fun hashCode(): Int {
        if (id != null)
            return id.hashCode()

        return super.hashCode()
    }

    override fun equals(other: Any?): Boolean {
        if (id == null || other == null || other !is BaseVO)
            return false

        return id.hashCode() == other.id?.hashCode()
    }
}

@Suppress("unused")
class Subclass(
        var name: String? = null,
        var category: String? = null
) : BaseVO()

或者使用 Kotlin 的“數據”類。 您最終會編寫更少的代碼行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM