在 Java 中比较枚举成员\
java programming java8object oriented programming
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; //使用 compareTo() 方法进行比较 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 也可以为空,不会造成任何问题 if(t1 == Tutorials.TOPIC_1) { System.out.println("t1 = TOPIC_1"); }else { System.out.println("t1 != TOPIC_1"); } //使用 equals() 方法进行比较 //在这种情况下,t2 不能为空。它将导致 //空指针异常 if(t2.equals(Tutorials.TOPIC_2)) { System.out.println("t2 = TOPIC_2"); }else { System.out.println("t2 != TOPIC_2"); } Tutorials t4 = null; //使用 equals() 方法进行比较 //以空安全方式 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