Java 1.5新增了枚举类型,解决了原有利用int或String常量表示枚举所带来的非类型安全问题。
如果在Java 1.5之前,想构造类型安全的枚举,所利用的方式如下:
在Java 1.5,则只要写成如下形式即可:
这种枚举背后的思想是什么呢?其实和类型安全的枚举的思想是一样的。
如下代码:
javac TestEnum.java
javap Test.TestEnum > a
javap -c Test.EnumType > b
查看文件a
可以看到EnumType中的枚举ENUM1是以类型安全的枚举形式实现的,即public static final Test.EnumType,另外Test.EnumType继承于java.lang.Enum类型,因此java 1.5新支持的枚举是在编译时将其转换成类似于在Java 1.5之前写的类型安全的枚举的形式 ,方便了程序的书写。
查看文件b
可以看到getstatic #22; //Field Test/EnumType.ENUM1:LTest/EnumType; 这句,表示得到Test.EnumType.ENUM1这个静态域,也验证了ENUM1是以静态域的形式存在的。
Java枚举类型的背后
最新推荐文章于 2023-08-29 15:51:06 发布