Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

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 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。