Java —— 列舉類(enum 類)

Alex_McAvoy發表於2018-10-23

有時一個類的物件是有限且固定的,在這種情況下,為了方便,可以使用列舉類。

【自定義列舉類】

自定義列舉類的步驟分以下四步:

  1. 提供類的屬性,宣告為:private、final
  2. 將屬性在構造器內初始化
  3. 通過公共方法呼叫屬性
  4. 在列舉類內部建立列舉物件
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Season spring=Season.SPRING;
		System.out.println(spring.getSeasonName());
		System.out.println(spring.getSeasonNumber());
	}
}
class Season{
	//提供類的屬性
	private final String name;
	private final int number;

	//構造器內初始化
	private Season(String name,int number) {
		this.name = name;
		this.number = number;
	}

	//通過公共方法呼叫屬性
	public String getSeasonName() {
		return name;
	}
	public int getSeasonNumber() {
		return number;
	}
        @Override
	public String toString() {
		return "Season [name=" + name + ", number=" + number + "]";
	}	
	
	//建立列舉類物件
	public static final Season SPRING = new Season("spring",1);
	public static final Season SUMMER = new Season("summer",2);
	public static final Season AUTUMN = new Season("autumn",3);
	public static final Season WINTER = new Season("winter",4);
	
}

【使用 enum 定義列舉類】

使用 enum 定義列舉類與自定義列舉類方法大致相同,不同的是要將建立列舉類物件放至類的最前,且初始化格式如下

enum Season{
	//建立列舉類物件
	SPRING("spring",1),
	SUMMER("summer",2),
	AUTUMN("autumn",3),
	WINTER("winter",4);
	
	//提供類的屬性
	private final String name;
	private final int number;

	//構造器內初始化
	private Season(String name,int number) {
		this.name = name;
		this.number = number;
	}

	//通過公共方法呼叫屬性
	public String getSeasonName() {
		return name;
	}
	public int getSeasonNumber() {
		return number;
	}
        @Override
	public String toString() {
		return "Season [name=" + name + ", number=" + number + "]";
	}	
}

列舉類的最大特點是增加了一些內建方法,如:values() 方法可以將列舉物件轉成陣列,valueOf(String str) 方法可以將寫入字串轉回列舉物件

public static void main(String[] args) {
	Season[] seasons=Season.values();
	for(Season i:seasons)
		System.out.println(i);
    /* 執行結果
     * Season [name=spring, number=1]
     * Season [name=summer, number=2]
     * Season [name=autumn, number=3]
     * Season [name=winter, number=4]
    */
	
    String str="SPRING";
	Season summer=Season.valueOf(str);
	System.out.println(spring);
    //執行結果:Season [name=spring, number=1]

}

關於列舉類的更多用法:點選這裡

相關文章