Java 中枚举的 switch 语句可以用于枚举吗?
java 8object oriented programmingprogramming
Java 中的枚举 (enum) 是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天数、一年中的月份等。
枚举天数 { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
您还可以定义一个枚举,将自定义值赋给声明的常量。但您需要有一个实例变量、一个构造函数和一个 getter 方法来返回值。
使用带有 switch 的枚举
switch 语句允许测试变量是否与值列表相等。每个值称为一个案例,并且针对每个案例检查被打开的变量
语法
switch(expression) { case value : // 语句 break; case value : // 语句 break; // 您可以有任意数量的 case 语句。 default : // 语句 }
使用 switch 语句,您可以使用 int、char 或枚举类型。使用任何其他类型都会产生编译时错误。
示例
让我们创建一个枚举,其中包含 5 个常量,代表 5 种不同苏格兰黑豹的型号,其价格为值,如下所示 −
enum Scoters { //带值的常量 ACTIVA125(80000), ACTIVA5G(70000), ACCESS125(75000), VESPA(90000), TVSJUPITER(75000); //实例变量 private int price; //用于初始化实例变量的构造函数 Scoters(int price) { this.price = price; } //显示价格的静态方法 public static void getPrice(int model){ Scoters constants[] = Scoters.values(); System.out.println("Price of: "+constants[model]+" is "+constants[model].price); } }
以下 Java 程序使用 switch case 检索所有车辆的价格。
public class EnumExample { Scoters sc; public EnumExample(Scoters sc) { this.sc = sc; } public void displayPrice() { switch (sc) { case Activa125: Scoters.getPrice(0); break; case Activa5G: Scoters.getPrice(1); break; case Access125: Scoters.getPrice(2); break; case Vespa: Scoters.getPrice(3); break; case TVSJupiter: Scoters.getPrice(4); break; default: System.out.println("Model not found"); break; } } public static void main(String args[]) { EnumExample activa125 = new EnumExample(Scoters.ACTIVA125); activa125.displayPrice(); EnumExample activa5G = new EnumExample(Scoters.ACTIVA5G); activa5G.displayPrice(); EnumExample access125 = new EnumExample(Scoters.ACCESS125); access125.displayPrice(); EnumExample vespa = new EnumExample(Scoters.VESPA); vespa.displayPrice(); EnumExample tvsJupiter = new EnumExample(Scoters.TVSJUPITER); tvsJupiter.displayPrice(); } }
输出
Price of: ACTIVA125 is 80000 Price of: ACTIVA5G is 70000 Price of: ACCESS125 is 75000 Price of: VESPA is 90000 Price of: TVSJUPITER is 75000