Java 中的枚举有太多未知的知识--枚举的底层实现
最编程
2024-04-22 11:10:20
...
上面我们已经说了,枚举是一个特殊的类,每一个枚举项本质上都是枚举类自身的实例。
因此,上面枚举类Direction可以通过下面代码进行示例:
final class Direction extends Enum{
public final static Direction EAST = new Direction();
public final static Direction WEST = new Direction();
public final static Direction NORTH = new Direction();
public final static Direction SOUTH = new Direction();
}
首先通过javac命令对Direction进行编译,然后通过javap命令来查看一下对应class文件内容:
bogon:enums apple$ javap Direction.class
Compiled from "Direction.java"
public final class com.choupangxia.enums.Direction extends java.lang.Enum<com.choupangxia.enums.Direction> {
public static final com.choupangxia.enums.Direction EAST;
public static final com.choupangxia.enums.Direction WEST;
public static final com.choupangxia.enums.Direction NORTH;
public static final com.choupangxia.enums.Direction SOUTH;
public static com.choupangxia.enums.Direction[] values();
public static com.choupangxia.enums.Direction valueOf(java.lang.String);
static {};
}
可以看到,一个枚举在经过编译器编译过后,变成了一个抽象类,它继承了java.lang.Enum;而枚举中定义的枚举常量,变成了相应的public static final属性,而且其类型就抽象类的类型,名字就是枚举常量的名字。
上一篇: 使用 C++ 枚举类型枚举和枚举类
下一篇: 枚举类型定义和应用摘要