【发布时间】:2014-12-07 05:01:32
【问题描述】:
我知道在 Java 中 enum 常量隐含地是 static final 变量。但是enum 类可以有一个实例变量,比如大小。所以每个enum 常量都会有一个'size'的副本。
等效的 Java 代码是什么?我的意思是它“似乎”静态enum 常量正在使用通常不可能的非静态实例变量?
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?
}
编辑:重申我的问题- 我对编译器的幕后实现感兴趣。我已经知道如何使用枚举。我正在寻找编译器的功能? (例如,如果我只写 A,编译器会将其转换为“public static final Member A”。我想知道编译器如何为每个 A、B、C 提供大小的副本。
【问题讨论】:
-
不要将变量和引用与对象混淆。