Java 中的枚举
用 enum 列出一组固定名称,让程序只能从该列表中选取。写出带 LOW、MEDIUM 和 HIGH 的 enum Level。在 Yard.java 中赋值 Level mark = Level.MEDIUM; 并打印 mark。用 javac Yard.java 编译,再运行 java Yard。屏幕应显示 MEDIUM。第二个演示对同一 mark 运行 switch 并打印 medium。把 abstract 类留给下一页——本课是一份简短的固定名称列表,以及如何打印或按其中一个分支。
打印一个枚举名
接口页用 implements 填满空的方法承诺。本页改为列出常量。打开 Yard.java。保持公共类名为 Yard。若残留的 Signal / implements 演示会淹没枚举主线,请删除它们,以及 Truck 的 horn 文件、路径演示和任何键盘 Scanner。程序不得等待输入。不需要 import 行。
在公共类上方声明枚举:
enum Level {
LOW,
MEDIUM,
HIGH
}
名称之间用逗号分隔。在本入门形态中保持大写。本教学文件中最后一个名称不需要尾随逗号。
在 Yard.main 内选取一个名称并打印:
Level mark = Level.MEDIUM;
System.out.println(mark);
你不写 new Level()。你写类型名、一个点和常量:Level.MEDIUM。
enum Level {
LOW,
MEDIUM,
HIGH
}
public class Yard {
public static void main(String[] args) {
Level mark = Level.MEDIUM;
System.out.println(mark);
}
}
在存放 Yard.java 的文件夹中运行 javac Yard.java。当圆括号、花括号和分号匹配时,javac 不会自己写出一行。然后运行 java Yard——不要写成 java Yard.java。运行命令去掉 .java 后缀。文件中只保留一个公共类,使名称与 Yard 一致。当 Level 枚举与 Yard 同文件时,在本入门形态下它不加 public。
屏幕显示 MEDIUM。把运行过程走一遍。Java 从 Yard.main 开始。变量 mark 保存常量 Level.MEDIUM。打印 mark 会写出该常量的名称。其他名称 LOW 和 HIGH 仍可在该类型上使用,但本演示只打印你赋值的那一个。
再读一遍赋值行:类型是 Level,值是 Level.MEDIUM。两边同属一个枚举。你不是在拼自由文本字符串;你是在挑选列表中的名称。以后在私下试验中把 mark 改成 LOW 或 HIGH 时,也保持这个习惯——只有枚举列表里的名称合法。
若仍看到接口文件里的 honk,请切到枚举教学文件并再运行 java Yard。若 javac 抱怨缺少常量,请检查 MEDIUM 的拼写和大写形式。若在调用处发明第四个名称却未写入枚举,javac 会拒绝——枚举中的列表才是允许集合。
看着屏幕大声说出规则:枚举列出名称,代码用点选取一个,打印显示该名称。本页不要发明 abstract 类。Abstract 类留给下一课。
用 switch 按枚举分支
第二个程序保持同一份 Level 列表。main 仍赋值 Level.MEDIUM。对 mark 的 switch 会为所选 case 打印一个小写词。
enum Level {
LOW,
MEDIUM,
HIGH
}
public class Yard {
public static void main(String[] args) {
Level mark = Level.MEDIUM;
switch (mark) {
case LOW:
System.out.println("low");
break;
case MEDIUM:
System.out.println("medium");
break;
case HIGH:
System.out.println("high");
break;
}
}
}
用 javac Yard.java 编译,再运行 java Yard。屏幕显示 medium。因为 mark 保存着 Level.MEDIUM,switch 进入了 MEDIUM case。break 停住该 case,以免后面的 case 继续执行。以后试验若想看到 low 或 high,只改赋值的常量——保持枚举列表不变。
在每个 case 内写裸常量名:case MEDIUM:,不要写 case Level.MEDIUM:。switch 已从 switch (mark) 知道类型。在本入门形态中,每次打印后都保留 break,让教学输出保持一行清晰结果。用眼睛把三个 case 过一遍:LOW 对应 low,MEDIUM 对应 medium,HIGH 对应 high。一次赋值只会跑其中一种打印。
若附近仍有接口演示,可当历史保留。本课请运行枚举教学文件,让屏幕显示 MEDIUM 或 medium,而不是 honk。若 javac 抱怨重复的公共类,说明文件里仍有不止一个 public 类型——只让 Yard 保持 public。
三个 Level 名称
📊 Level enum names
| Name | Role on this page |
|---|---|
LOW |
listed constant; switch can print low |
MEDIUM |
assigned and printed in both demos |
HIGH |
listed constant; switch can print high |
表格是本页的简短地图。枚举保存全部三个名称。第一个演示把中间名称打印为 MEDIUM。第二个演示把同一选择映射为小写词 medium。保持列表简短固定;本页不要把 mark 当成自由输入的 String。 |
与接口对比
在接口页,Signal 承诺空方法,Truck implements Signal 填满它们。在本页,enum Level 列出名称,Yard 选取一个。你仍然编译 Yard.java 并运行 java Yard。新记号是 enum、大写常量列表、Level.MEDIUM,以及——在第二个演示中——针对这些名称的 switch case。
若仍打开残留的 implements Signal 文件,你会看到方法体和 honk。切到枚举文件,让顶部显示 enum Level,并让 main 赋值一个常量。把 abstract 类演示留在本页之外。把键盘输入留在本页之外。
在 abstract 类之前
你可以声明带 LOW、MEDIUM 和 HIGH 的 enum Level,赋值 Level.MEDIUM,并在屏幕上看到 MEDIUM。你可以对该 mark 做 switch 并看到 medium。对每个保留的演示依次编译 Yard.java 并运行 java Yard。程序从固定列表中选取。下一页是 abstract 类:父类型可以留下没有完整方法体的方法,由子类补完。
保留打印演示,以便屏幕上有清晰常量。保留 switch 演示,以便对该常量有清晰分支。把 abstract 文件留在本页之外。这三条习惯是继续前进前的检查点。当直接打印出现 MEDIUM——并且 switch 出现 medium——枚举就完成本课任务,你已准备好进入关于 abstract 类的下一主题。
最后再扫一遍文件夹:一个公共 Yard、一个含三个名称的 enum Level、没有键盘等待、没有强行加入的 abstract 类。对你保持打开的演示再跑一次 javac Yard.java 和 java Yard。若屏幕仍符合表格中间行的故事,枚举列表就稳固了,课程可以在下一页进入 abstract 类。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部