比较Java中的枚举成员

java.lang.Enum类是所有Java语言枚举类型的通用基类。

类声明

以下是java.lang.Enum类的声明-

public abstract class Enum<E extends Enum<E>>
   extends Object
      implements Comparable<E>, Serializable

我们可以使用以下方式比较枚举变量。

  • 使用Enum.compareTo()方法。compareTo()方法将此枚举与指定对象的顺序进行比较。

  • 使用Enum.equals()方法。equals()如果指定对象等于此枚举常量,则方法返回true。

  • 使用==运算符。==运算符检查类型,并对相同类型的枚举常量进行空安全比较。

示例

public class Tester {
   //下涵盖的主题
   enum Tutorials {        
      TOPIC_1, TOPIC_2, TOPIC_3;    
   }  

   public static void main(String[] args) {
      Tutorials t1, t2, t3;
 
      t1 = Tutorials.TOPIC_1;        
      t2 = Tutorials.TOPIC_2;        
      t3 = Tutorials.TOPIC_3;  

      //Comparing using compareTo() method
      if(t1.compareTo(t2) > 0) {
         System.out.println(t2 + " completed before " + t1);        
      }

       if(t1.compareTo(t2) < 0) {
         System.out.println(t1 + " completed before " + t2);        
      }

      if(t1.compareTo(t2) == 0) {          
         System.out.println(t1 + " completed with " + t2);        
      }

      //比较      
      //在这种情况下,t1也可以为null,不会引起问题
      if(t1 == Tutorials.TOPIC_1) {
         System.out.println("t1 = TOPIC_1");
      }else {
         System.out.println("t1 != TOPIC_1");
      }

      //Comparing using equals() method
      //在这种情况下,t2不能为空。这会导致
      //空指针异常
      if(t2.equals(Tutorials.TOPIC_2)) {
         System.out.println("t2 = TOPIC_2");
      }else {
         System.out.println("t2 != TOPIC_2");
      }

      Tutorials t4 = null;  
      //Comparing using equals() method
      //以null安全的方式
      if(Tutorials.TOPIC_3.equals(t4)) {
         System.out.println("t4 = TOPIC_3");
      }else {
         System.out.println("t4 != TOPIC_3");
      }          
   }
}

输出结果

TOPIC_1 completed before TOPIC_2
t1 = TOPIC_1
t2 = TOPIC_2
t4 != TOPIC_3