你可以在 Java 中将 switch 语句用于枚举吗?
枚举 (enum) 在 Java 中是一种保存一组常量值的数据类型。你可以使用枚举来保存固定值,例如一周中的天数、一年中的月份等。
enum Days {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}你也可以定义具有自定义值的枚举,用于已声明的常量。但你需要有一个实例变量、一个构造器和一个 getter 方法来返回值。
与 switch 一起使用枚举
switch 语句允许根据值列表对变量进行相等性测试。每个值称为一个 case,并且被 switch 的变量针对每个 case 进行检查
语法
switch(expression) {
case value :
// Statements
break;
case value :
// Statements
break;
// You can have any number of case statements.
default :
// Statements
}对于 switch 语句,你可以使用 int、char 或 enum 类型。使用任何其他类型都会产生编译时错误。
例
让我们创建一个枚举,其中有 5 个常量,分别表示 5 辆不同摩托车的型号,其价格作为值,如下所示 −
enum Scoters {
//Constants with values
ACTIVA125(80000), ACTIVA5G(70000), ACCESS125(75000), VESPA(90000), TVSJUPITER(75000);
//Instance variable
private int price;
//Constructor to initialize the instance variable
Scoters(int price) {
this.price = price;
}
//Static method to display the 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP