我知道在Java中一个enum
常量是隐含的static final
变量。但enum
类可以有一个实例变量say大小。所以每个enum
常量都会有一个'size'的副本。 这是什么等效的Java代码?我的意思是“似乎”静态enum
常量是使用非静态的实例变量,这是不可能正常?java如何支持java枚举常量的实例变量?
enum Members{
A(1),B(2),C(3); // I have 3 enum constants here
private int size;
Members (int size) {
//System.out.println("Initializing var with size = "+size);
}
}
等效代码我知道到目前为止:
public final class Member extends Enums<Members> {
public static final Members A;
// ...
// What happened to size? How do A,B,C get a copy of size?
}
编辑:要重申我question- 我感兴趣的由编译器执行的场景背后。我已经知道如何使用枚举。我正在寻找编译器的功能? (例如,如果我简单地写A,编译器将其翻译为“公共静态最终成员A”。我想知道编译器如何给每个A,B,C一个大小的副本。
不要混淆变量和引用与对象。 – 2014-10-12 14:51:14