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

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

}

#1楼 票数:5

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

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

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

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

#2楼 票数:0

出于所有实际目的,java将枚举视为一个只能具有固定数量的对象(对应于定义的每个枚举常量的对象)的类。 所以enum在加载,初始化等方面几乎就像一个类。

  ask by user3586231 translate from so

未解决问题?本站智能推荐:

1回复

内存分配Java枚举

这个问题是关于在枚举内贴标的对象的内存分配,我有一个Enum类,如下 我的疑问是何时为类class1,class2,class3创建(分配内存)对象。 谢谢
2回复

Java:抽象枚举常量

有没有办法将抽象枚举声明为函数参数? 我想要实现的是:
2回复

枚举与静态常量,内存占用

首先请参阅Android开发人员指南中的以下引用: 枚举通常需要的内存是静态常量的两倍多。 你应该严格避免在Android上使用枚举。 Java中的每个类(包括匿名内部类)都使用大约500个字节的代码。 https://developer.android.com/t
1回复

Java枚举是否在Android Runtime中分配堆内存?

我正在看两位Android工程师讲的视频,他们谈论Android中的垃圾回收。 在引言中,他们对枚举有一点玩笑。 罗曼·盖伊(Romain Guy)说:“我必须在那儿纠正你。枚举,他们没有分配。这就是重点。” 起初,我以为Romain只是在开玩笑,因为枚举在其他语言中是这样工作的。 但是
1回复

遍历枚举类并为每个[JAVA]分配颜色

目前正在第二学期工作,该项目是我们第一次使用Enum类的项目。 当前,它包含我们用来在MapCanvas类中着色的WayType。 我想遍历该类,并在此迭代期间将不同的颜色分配给不同的Enum,但是我不知道如何进行。 目前,我的Enum类如下所示: 目前,我们如何在MapCan
3回复

Java枚举(或int常量)vs c enum

我正试图在C中做一些通常看起来像这样的事情: 方法1 以下是我在Java中使用enum : 方法1 - 问题 我发现我不得不在不同的地方重复这种模式,但是想知道:有更好的方法吗? 特别是因为: 这似乎令人费解,不那么优雅,而且 它还将编译时间改为运
6回复

枚举代​​替Java中的常量

现在我有一天听说我们应该使用Enums而不是Constants。 在所有情况下都有可能吗? 枚举是否代替了常量 ? 在下面的示例中,我在Constants文件中定义了Constants,ConstantsTest使用它们 请在我的示例示例中提出枚举会更好,或者我当前使用常量的方
3回复

(JAVA枚举) - 枚举常量内的匿名类

美好的一天! 我有一个只实现一个方法的接口。 我不想让几个类都实现这一个单一的方法,因此我决定使用匿名类。 我对某些静态项目使用枚举,这些枚举具有我的界面实例。 但是,当我尝试在我的枚举常量中创建一个匿名类时,我的IDE(eclipse)字面上没有告诉我什么(好像它在代码块之外)