Java - 枚举:初学者指南
你好,有抱负的Java程序员!今天,我们将深入探讨Java枚举的奇妙世界。如果你之前从未听说过它们,请不要担心——在本教程结束时,你将成为枚举的专家!所以,拿一杯你最喜欢的饮料,让我们开始吧!
枚举简介
你是否曾经遇到过需要在代码中表示一组固定常量的情况?也许你正在为一家咖啡店创建一个程序,需要表示不同尺寸的咖啡杯。或者也许你正在构建一个游戏,需要表示角色可以移动的不同方向。这时,枚举就来拯救你了!
枚举,是“枚举”的缩写,是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 盎司)
让我们分解一下这个例子中发生了什么:
- 我们创建了一个
咖啡杯尺寸
变量我的尺寸
,并将其设置为中
。 - 我们使用
getDescription()
方法打印我的尺寸
的描述。 - 我们打印
中
的序号,它是1(记住,序号从0开始)。 - 我们使用for-each循环遍历所有
咖啡杯尺寸
值并打印它们的描述。 - 最后,我们演示了使用
valueOf()
根据名称获取大
枚举常量的用法。
就这样!你已经迈出了Java枚举世界的第一步。它们是表示固定常量集的类型安全方式的一种强大工具。
请记住,枚举不仅仅是花哨的常量。它们可以有构造器、字段和方法,这使得它们非常灵活。它们非常适合表示如星期天数、扑克牌花色、披萨尺寸或程序中的任何其他固定值集。
在你继续Java的旅程中,你会发现枚举有更多的用途。它们是Java语言的基本部分,掌握它们将使你成为一个更有效、更高效的程序员。
继续练习,继续编码,最重要的是,继续享受学习的过程。在你意识到之前,你将能够轻松编写复杂的Java程序。祝你编程愉快!
Credits: Image by storyset