簡體   English   中英

Java枚舉,每個常量如何以及何時分配內存

[英]Java enum, how and when memory allocated per constant

我有簡單的枚舉類,如下所示。 我想知道如何為每個常量分配內存(為每個常量創建成員類對象)以及它的范圍是什么。

public enum Member {
    HAPPY("HAPPY"),RAhul("RAhul"),ANSAL("ANSAL");
    private String argument;

    Member(String arguments)
    {
        System.out.println("Enum Constructor work");
        this.argument = arguments;

    }
    public String getValue() {
        return argument;
    }

}

成員HAPPY("HAPPY"),RAhul("RAhul"),ANSAL("ANSAL"); 在加載枚舉類時創建(即它們的作用域是靜態的)。 枚舉被編譯為擴展java.lang.Enum普通類,並且其實例像其他類對象一樣在堆中分配。

每個成員調用在枚舉中定義的構造函數,該構造函數接受字符串參數。

這來自Java語言規范相關部分

枚舉常量后面可以跟參數,當在類初始化期間創建常量時,這些參數將傳遞給枚舉類型的構造函數,如本節后面所述。 使用正常的重載規則(第15.12.2節)選擇要調用的構造函數。 如果省略參數,則假定為空參數列表。

出於所有實際目的,java將枚舉視為一個只能具有固定數量的對象(對應於定義的每個枚舉常量的對象)的類。 所以enum在加載,初始化等方面幾乎就像一個類。

暫無
暫無

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

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