Java 枚举是什么,原理与使用边界是什么?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
枚举用于表达一组明确、有限的命名实例,例如订单状态或星期。Java enum 编译后属于特殊类,直接继承 Enum;每个枚举常量对应一个实例。它可以有字段、方法、构造器并实现接口,远不只是“把字符串换成常量”。
讲清原理
枚举常量在类初始化过程中建立。编译器还提供 values 和 valueOf(String) 等能力;name 返回声明名称,ordinal 返回声明顺序位置。顺序位置可能因插入新常量而变化,因此不适合作为长期存储的稳定业务编码。
枚举不能像普通类那样任意 new,也不能再继承另一个业务父类。常量还可以拥有自己的类体,所以不能把所有枚举实现细节都概括成“一个永远没有子类的普通 final 类”。
例子与易错点
enum State { NEW, DONE }
System.out.println(State.valueOf("DONE") == State.DONE); // true
System.out.println(State.NEW.name()); // NEW
valueOf 区分大小写,名称不存在时会抛异常。需要外部编码时显式设计 code 字段,避免把 ordinal 直接写进数据库或协议。
相关题:第 19 题、第 45 题、第 69 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。