我们如何比较Java中枚举的成员?

Java中的枚举(枚举)是一种存储一组常量值的数据类型。您可以使用枚举来存储固定值,例如一周中的天,一年中的月等。

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个不同scoters的模型,其价格为值,如下所示-

enum Vehicles {
   //带值的常量
   ACTIVA125(80000), ACTIVA5G(70000), ACCESS125(75000), VESPA(90000), TVSJUPITER(75000);
   //实例变量
   private int price;
   //Constructor to initialize the 实例变量
   Vehicles(int price) {
  this.price = price;
   }
   //静态显示价格的方法
   public int getPrice(){
      return this.price;
   }
}

在以下Java程序中,该displayPrice()方法接受车辆枚举的常量,并使用“ ==”运算符将其与车辆中的所有其他常量进行比较,并在匹配的情况下替换特定常量(价格)的值。

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