如何在 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

相关文章