Java枚举,每个常量如何以及何时分配内存

use*_*231 6 java enums

我有简单的枚举类,如下所示.我想知道如何为每个常量分配内存(为每个常量创建成员类对象)以及它的范围是什么.

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

man*_*uti 5

HAPPY("HAPPY"),RAhul("RAhul"),ANSAL("ANSAL");加载枚举类时创建成员(即它们的作用域是静态的).枚举被编译为扩展的普通类,java.lang.Enum其实例像其他类对象一样在堆中分配.

每个成员调用在枚举中定义的构造函数,该构造函数接受字符串参数.

这来自Java语言规范相关部分:

枚举常量后面可以跟参数,当在类初始化期间创建常量时,这些参数将传递给枚举类型的构造函数,如本节后面所述.使用正常的重载规则(第15.12.2节)选择要调用的构造函数.如果省略参数,则假定为空参数列表.

  • ...和实例一样存在于堆中,就像所有其他Java对象一样. (3认同)