亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式

精通 Java 枚举字符串表示

探索 Java 枚举如何暴露字符串值,如何通过重写自定义,以及整洁可维护代码的最佳实践。

默认字符串表示

Java enum 类型自动为每个常量提供字符串表示。默认调用 toString() 或 name() 返回常量标识符。下例演示此行为:

enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } class Main { public static void main(String[] args) { System.out.println("string value of SMALL is " + Size.SMALL.toString()); System.out.println("string value of MEDIUM is " + Size.MEDIUM.name()); } }

输出

string value of SMALL is SMALL string value of MEDIUM is MEDIUM 

输出确认默认字符串值等于枚举常量名。

重写默认字符串值

name() 为 final 方法不可重写,但 toString() 可自定义。这允许每个常量展示更友好或领域特定的字符串。下例中每个常量单独重写 toString():

enum Size { SMALL { @Override public String toString() { return "The size is small."; } }, MEDIUM { @Override public String toString() { return "The size is medium."; } }; } class Main { public static void main(String[] args) { System.out.println(Size.MEDIUM.toString()); } }

输出

The size is medium. 

此例中每个枚举常量提供自己的 toString() 实现,实现更丰富的文本输出。

枚举字符串的进阶模式

对于较大枚举或需多属性时,基于构造器的方法保持代码整洁:

enum Size { SMALL("S", "The size is small."), MEDIUM("M", "The size is medium."), LARGE("L", "The size is large."); private final String code; private final String description; Size(String code, String description) { this.code = code; this.description = description; } @Override public String toString() { return description; } public String getCode() { return code; } } 

构造器集中管理数据,保持枚举可读。toString() 保持灵活,额外 getter 暴露原始值。

重要提示

• name() 是 java.lang.Enum 中定义的 final 方法,不可重写。 Java Enum API

• 重写 toString() 影响 System.out.println()、序列化及依赖枚举字符串表示的代码。审慎使用以避免破坏契约预期。

深入了解枚举设计模式,请参阅 创建枚举字符串的最佳方式。

java

  1. 掌握 C# 字符串:基础、操作与进阶技巧完全指南
  2. 精通 Java 运算符:类型、语法与实战示例
  3. 精通 Java 字符串:创建、方法与最佳实践
  4. 精通 Java 接口:概念、实现与最佳实践
  5. 精通 Java 枚举:枚举类与枚举常量完全指南
  6. Java 枚举构造器详解与实战示例
  7. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  8. 精通 Java String.endsWith():检查字符串后缀(示例)
  9. Java 字符串替换大全:replace()、replaceAll() 与 replaceFirst() 详解
  10. Java String toLowerCase() 与 toUpperCase():区域感知的大小写转换
  11. Java 中 char 与 String 相互转换:实用示例与最佳实践
  12. Java 递归反转字符串:原理、代码实现与性能分析