【Java】枚举的实例化

在中文中,枚举实例化是以枚举项为单位。

在中文中,Enum的实例化是在枚举项单位而非类单位进行的。

使用具有以下枚举器(A,B,C)的Enum,将生成”A, B, C”三个Sample类型的实例。

public enum Sample {
    A, B, C
}

通过调用Sample.A,具体来说,会生成”A, B, C”这3个实例。

public class Main {
    public static void main(String[] args) {
    	Sample sample = Sample.A;
	}
}
只调用了Sample.A,但被生成为Sample类型的实例的是枚举类型Enum中定义的所有枚举子项(A、B、C)。

只会生成一次 Enum 的实例。

如果在使用迭代器的时候每次都会生成一个新的实例,根据下面的代码结果应该是“false”,但实际上返回的却是“true”。

public class Main {
	public static void main(String[] args) {
		sample(Sample.A); // ここでインスタンスが生成される
	}
	private static void sample(Sample sample) {
		System.out.println(Sample.A == sample); // ここではインスタンスが生成されない
	}
}
当我们编译自定义的Enum时,据说编译器会在自动添加的静态初始化子内生成并赋值每个枚举实例给静态字段。

以下内容为参考:

 

全面攻略Java SE 11 Gold問題集[1Z0-816]專屬策略,參見第57頁。

bannerAds