如何在 Java 中比较枚举的成员?
java 8object oriented programmingprogramming更新于 2025/4/28 17:07:17
Java 中的枚举 (enum) 是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天数、一年中的月份等。
enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
您还可以定义一个枚举,将自定义值赋给声明的常量。但您需要有一个实例变量、一个构造函数和 getter 方法来返回值。
您可以使用"=="比较两个枚举的成员运算符或 equals() 方法。
使用 “==” 比较枚举成员
- 如果使用 “==” 运算符比较两个枚举成员,则两者必须属于同一类型,否则会产生编译时错误。
enum Vehicles { ACTIVA125, ACTIVA5G, ACCESS125, VESPA, TVSJUPITER; } enum Scoters { ACTIVA125, VESPA, TVSJUPITER, ACTIVA5G, ACCESS125,; } public class EnumComparison { public static void main(String args[]) { Vehicles veh[] = Vehicles.values(); Scoters sco[] = Scoters.values(); //比较两种不同类型的枚举成员 System.out.println(veh[1]==sco[1]); } }
编译时错误
EnumComparison.java:14: error: incomparable types: Vehicles and Scoters System.out.println(veh[1]==sco[1]); ^ 1 error
- 使用“==”运算符,您可以比较相同类型的成员枚举(仅限)。
示例
让我们创建一个名为Vehicles的枚举,其中包含5个常量,代表5种不同scoter的型号,其价格为值,如下所示−
enum Vehicles { //具有值的常量 ACTIVA125(80000), ACTIVA5G(70000), ACCESS125(75000), VESPA(90000), TVSJUPITER(75000); //实例变量 private int price; //构造函数初始化实例变量 Vehicles(int price) { this.price = price; } //静态方法显示价格 public int getPrice(){ return this.price; } }
在以下 Java 程序中,displayPrice() 方法接受枚举 Vehicles 的常量,并使用“==” 运算符将其与 Vehicles 中的所有其他常量进行比较,如果匹配则替换特定常量(价格)的值。
public class EnumerationExample { public void displayPrice(Vehicles enum) { if (enum == Vehicles.ACTIVA125) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.ACTIVA5G) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.ACCESS125) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.VESPA) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else if (enum == Vehicles.TVSJUPITER) { System.out.println("The price of "+enum+" is:"+enum.getPrice()); } else { System.out.println("Model not found"); } } public static void main(String args[]) { EnumerationExample obj = new EnumerationExample(); obj.displayPrice(Vehicles.ACTIVA125); obj.displayPrice(Vehicles.ACTIVA5G); obj.displayPrice(Vehicles.ACCESS125); obj.displayPrice(Vehicles.VESPA); obj.displayPrice(Vehicles.TVSJUPITER); } }
输出
The price of Activa125 is:80000 The price of ACTIVA5G is:70000 The price of ACCESS125 is:75000 The price of VESPA is:90000 The price of TVSJUPITER is:75000
使用“==”比较枚举成员
- 您可以使用equals()方法比较两个相同或不同类型的枚举成员。
enum Vehicles { ACTIVA125, ACTIVA5G, ACCESS125, VESPA, TVSJUPITER; } enum Scoters { ACTIVA125, VESPA, TVSJUPITER, ACTIVA5G, ACCESS125,; } public class EnumerationComparison { public static void main(String args[]) { Vehicles veh[] = Vehicles.values(); Scoters sco[] = Scoters.values(); //比较两种不同类型的枚举成员 System.out.println(veh[1].equals(sco[1])); System.out.println(veh[1].equals(veh[1])); } }
输出
False true