天天看點

Java——枚舉枚舉類的使用定義枚舉類Enum類中的常用方法

枚舉類

  • 枚舉類的使用
  • 定義枚舉類
  • Enum類中的常用方法

枚舉類的使用

1.枚舉類的了解:類的對象隻有有限個,确定的。我們稱此類為枚舉類

2.當需要定義一組常量時,強烈建議使用枚舉類

3.如果枚舉類中隻有一個對象,則可以作為單例模式的實作方式。

定義枚舉類

方式一: jdk5.0之前,自定義枚舉類

方式二:jdk5.0,可以使用enum關鍵字定義枚舉類

方式一:
public class 自定義 {
    public static void main(String[] args) {
        Season season=Season.SPRING;
        System.out.println(season);
    }
}
//自定義枚舉類
class Season{
//1、聲明Season對象的屬性
    private final String seasonName;
    private final String seasonDesc;
//2、私有化類的構造器;并給對象屬性指派
    private Season(String seasonName, String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
//3、提供目前類的多個對象 public static final
    public static final Season SPRING=new Season("春天","春暖花開");
    public static final Season SUMMER=new Season("夏天","夏日炎炎");
    public static final Season AUTUMN=new Season("秋天","秋高氣爽");
    public static final Season WINTER=new Season("冬天","冰天雪地");
    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}
方式二:
public class 關鍵字enum {
    public static void main(String[] args) {
        Season1 summer = Season1.SUMMER;
        System.out.println(summer);
    }
}
enum Season1{
    //1.提供目前枚舉類的對象,多個對象之間用","隔開,末尾對象";"結束,且必須放在類開頭
    SPRING("春天","春暖花開"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高氣爽"),
    WINTER("冬天","冰天雪地");
    //2、聲明Season對象的屬性
    private final String seasonName;
    private final String seasonDesc;
    //3、私有化類的構造器;并給對象屬性指派
    private Season1(String seasonName, String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
}
           

Enum類中的常用方法

使用enum關鍵字定義的枚舉類實作接口的情況

情況一:實作接口,在enum類中實作抽象方法.

情況二:讓枚舉類的對象分别實作接口中的抽象方法.

方法 描述
valueOf() 傳遞枚舉類型的Class對象和枚舉常量名稱給靜态方法valueOf,會得到與參數比對的枚舉常量。
toString() 得到目前枚舉常量的名稱。你可以通過重寫這個方法來使得到的結果更易讀。
equals() 在枚舉類型中可以直接使用"== " 來比較兩個枚舉常量是否相等。Enum提供的這個equals0方法,也是直接使用 =="實作的。它的存在是為了在Set、List和 Map中使用。注意,equals()是不可變的。
hashCode() Enum實作了hashCode()來和equals()保持一緻。它也是不可變的。
getDeclaringClass() 得到枚舉常量所屬枚舉類型的Class對象。可以用它來判斷兩個枚舉常量是否屬于同一個枚舉類型。
name 得到目前枚舉常量的名稱。建議優先使用toString()。
ordinal 得到目前枚舉常量的次序。
compareTo() 枚舉類型實作了Comparable接口,這樣可以比較兩個枚舉常童的大小(按照聲明的順序排列)
clone() 枚舉類型不能被Clone。為了防止子類實作克隆方法,Enum實作了一個僅抛出CloneNotSupportedException異常的不變Clone()o