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

精通 Java 枚举:枚举类与枚举常量完全指南

Java 枚举

本教程学习 Java 枚举,通过示例掌握枚举与枚举类的创建与使用。

Java 中枚举(enumeration 简称)是一组固定常量值的类型。使用 enum 关键字声明。例如:

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }

此处创建名为 Size 的枚举,包含固定值 SMALL、MEDIUM、LARGE、EXTRALARGE。

大括号内的值称为枚举常量(值)。

注意: 枚举常量惯例用全大写表示。


示例 1:Java 枚举

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } class Main { public static void main(String[] args) { System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); } }

输出

 SMALL MEDIUM

如上例所示,通过枚举名访问常量值。

也可创建枚举类型变量。例如:

 Size pizzaSize;

此处 pizzaSize 为 Size 类型变量,只能赋值 4 个值之一。

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

示例 2:配合 switch 语句使用枚举

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } class Test { Size pizzaSize; public Test(Size pizzaSize) { this.pizzaSize = pizzaSize; } public void orderPizza() { switch(pizzaSize) { case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; } } } class Main { public static void main(String[] args) { Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); } }

输出

 I ordered a medium size pizza.

上程序创建枚举类型 Size,声明 Size 类型变量 pizzaSize。

pizzaSize 仅可赋值 4 个常量(SMALL、MEDIUM、LARGE、EXTRALARGE)。

注意语句:

 Test t1 = new Test(Size.MEDIUM);

调用 Test 类的 Test() 构造器,pizzaSize 被赋值为 MEDIUM 常量。

基于该值,执行 switch 对应分支。


Java 枚举类

Java 中枚举类型被视为特殊类,Java 5 引入。

枚举类可像普通类一样包含方法和字段。

 enum Size { constant1, constant2, …, constantN; // 方法和字段 }

创建枚举类时,编译器为每个枚举常量自动创建实例(对象)。且所有枚举常量默认均为 public static final。


示例 3:Java 枚举类

 enum Size{ SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() { // this 指代对象 SMALL switch(this) { case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; } } public static void main(String[] args) { // 调用 getSize() // 使用 SMALL 对象 System.out.println("The size of the pizza is " + Size.SMALL.getSize()); } }

输出

 The size of the pizza is small

上例创建枚举类 Size,含四个常量 SMALL、MEDIUM、LARGE、EXTRALARGE。

因 Size 是枚举类,编译器自动为每个常量创建实例。

此处 main() 方法中,使用实例 SMALL 调用 getSize() 方法。

注意:像普通类一样,枚举类也可包含构造器。详见 Java 枚举构造器。


Java 枚举类的方法

枚举类提供一些预定义方法供直接使用。

1. Java Enum ordinal()

ordinal() 返回枚举常量的位置。例如:

 ordinal(SMALL) // 返回 0

2. Enum compareTo()

compareTo() 基于序数比较枚举常量。例如:

 Size.SMALL.compareTo(Size.MEDIUM) // 返回 ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString()

toString() 返回枚举常量的字符串表示。例如:

 SMALL.toString() // 返回 "SMALL"

4. Enum name()

name() 返回枚举常量定义名的字符串形式,返回值为 final。例如:

 name(SMALL) // 返回 "SMALL"

5. Java Enum valueOf()

valueOf() 接受字符串,返回同名枚举常量。例如:

 Size.valueOf("SMALL") // 返回常量 SMALL.

6. Enum values()

values() 返回包含所有枚举常量的枚举类型数组。例如:

 Size[] enumArray = Size.value();

为何使用 Java 枚举?

Java 引入枚举旨在 替代 int 常量。

假设使用一组 int 常量:

 class Size { public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; }

问题在于打印常量时仅输出数字,不直观。

改用枚举:

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }

代码更直观。

枚举还提供 编译期类型安全。

声明 Size 类型变量:

 Size size;

保证变量仅持有四个值之一。尝试传入其他值,编译器报错。

java

  1. 精通C语言枚举:定义、声明与标志位操作
  2. 精通 Java 运算符:类型、语法与实战示例
  3. Java 注释:类型、用法与最佳实践
  4. 精通 Java 增强 for 循环:语法、示例与最佳实践
  5. 精通 Java 字符串:创建、方法与最佳实践
  6. 精通 Java 接口:概念、实现与最佳实践
  7. 精通 Java 匿名内部类:定义、语法与实战示例
  8. 精通 Java 枚举:枚举类与枚举常量完全指南
  9. Java 枚举构造器详解与实战示例
  10. 精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式
  11. 精通 Java Try-With-Resources:自动资源管理详解
  12. Java 注解详解:类型、放置位置与实战示例