Java - 枚举:初学者指南

你好,有抱负的Java程序员!今天,我们将深入探讨Java枚举的奇妙世界。如果你之前从未听说过它们,请不要担心——在本教程结束时,你将成为枚举的专家!所以,拿一杯你最喜欢的饮料,让我们开始吧!

Java - Enums

枚举简介

你是否曾经遇到过需要在代码中表示一组固定常量的情况?也许你正在为一家咖啡店创建一个程序,需要表示不同尺寸的咖啡杯。或者也许你正在构建一个游戏,需要表示角色可以移动的不同方向。这时,枚举就来拯救你了!

枚举,是“枚举”的缩写,是Java中一种特殊的类,它表示一组常量(不可变的变量,如final变量)。可以把它看作是一种奇特的方式来创建一组预定义的值,这些值不会改变。

类声明

让我们从如何声明枚举开始。语法非常简单:

enum 咖啡杯尺寸 {
小,
中,
大
}

在这个例子中,我们创建了一个名为咖啡杯尺寸的枚举,其中包含三个常量:小,中和大。注意我们是如何使用enum关键字而不是class,以及每个常量是如何用逗号分隔的。

类构造器

枚举可以有构造器,就像普通类一样。这允许我们将附加数据与每个枚举常量关联起来。让我们扩展我们的咖啡杯尺寸例子:

enum 咖啡杯尺寸 {
小(8),
中(12),
大(16);

private final int 盎司;

咖啡杯尺寸(int 盎司) {
this.盎司 = 盎司;
}

public int getOunces() {
return 盎司;
}
}

在这个更新版本中,我们添加了一个构造器,它接受一个int参数,表示每个尺寸的盎司数。我们还添加了一个私有字段盎司和一个获取器方法getOunces()

类方法

枚举可以有方法,就像普通类一样。让我们给我们的咖啡杯尺寸枚举添加一个方法:

enum 咖啡杯尺寸 {
小(8),
中(12),
大(16);

private final int 盎司;

咖啡杯尺寸(int 盎司) {
this.盎司 = 盎司;
}

public int getOunces() {
return 盎司;
}

public String getDescription() {
return this.name() + " 咖啡 (" + this.盎司 + " 盎司)";
}
}

我们添加了一个getDescription()方法,它返回一个描述咖啡尺寸的字符串。name()方法是從Enum类继承的,它返回常量的名称作为字符串。

继承的方法

所有枚举都隐式继承自java.lang.Enum。这意味着它们附带了一些内置方法。以下是一些最常用的方法:

方法 描述
name() 返回枚举常量的名称
ordinal() 返回枚举常量的位置(基于0)
valueOf(String name) 返回具有指定名称的枚举常量
values() 返回一个包含所有枚举常量的数组

示例

现在,让我们在完整的示例中把所有内容放在一起:

public class 咖啡店 {
public static void main(String[] args) {
咖啡杯尺寸 我的尺寸 = 咖啡杯尺寸.中;

System.out.println("我点了一杯 " + 我的尺寸.getDescription());
System.out.println("这个尺寸的序号是: " + 我的尺寸.ordinal());

System.out.println("\n所有可用的尺寸:");
for (咖啡杯尺寸 尺寸 : 咖啡杯尺寸.values()) {
System.out.println(尺寸.getDescription());
}

// 使用 valueOf
咖啡杯尺寸 另一个尺寸 = 咖啡杯尺寸.valueOf("大");
System.out.println("\n使用 valueOf: " + 另一个尺寸.getDescription());
}
}

enum 咖啡杯尺寸 {
小(8),
中(12),
大(16);

private final int 盎司;

咖啡杯尺寸(int 盎司) {
this.盎司 = 盎司;
}

public int getOunces() {
return 盎司;
}

public String getDescription() {
return this.name() + " 咖啡 (" + this.盎司 + " 盎司)";
}
}

输出

运行这个程序时,你会看到以下输出:

我点了一杯 中 咖啡 (12 盎司)
这个尺寸的序号是: 1

所有可用的尺寸:
小 咖啡 (8 盎司)
中 咖啡 (12 盎司)
大 咖啡 (16 盎司)

使用 valueOf: 大 咖啡 (16 盎司)

让我们分解一下这个例子中发生了什么:

  1. 我们创建了一个咖啡杯尺寸变量我的尺寸,并将其设置为
  2. 我们使用getDescription()方法打印我的尺寸的描述。
  3. 我们打印的序号,它是1(记住,序号从0开始)。
  4. 我们使用for-each循环遍历所有咖啡杯尺寸值并打印它们的描述。
  5. 最后,我们演示了使用valueOf()根据名称获取枚举常量的用法。

就这样!你已经迈出了Java枚举世界的第一步。它们是表示固定常量集的类型安全方式的一种强大工具。

请记住,枚举不仅仅是花哨的常量。它们可以有构造器、字段和方法,这使得它们非常灵活。它们非常适合表示如星期天数、扑克牌花色、披萨尺寸或程序中的任何其他固定值集。

在你继续Java的旅程中,你会发现枚举有更多的用途。它们是Java语言的基本部分,掌握它们将使你成为一个更有效、更高效的程序员。

继续练习,继续编码,最重要的是,继续享受学习的过程。在你意识到之前,你将能够轻松编写复杂的Java程序。祝你编程愉快!

Credits: Image by storyset