正在加载...

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。

Yard print Level.MEDIUM

java
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 打印一个小写词。

Yard switch on Level.MEDIUM

java
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 类。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
5
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部