天天看點

java枚舉類用法總結

案例:使用枚舉類型(enum)來定義Season類

public class enumTest {
	public static void main(String[] args) {
		//Season.SPRING 可以擷取一個Season對象
		Season spring = Season.SPRING;
		spring.showInfo();
		//重複執行Season.SPRING 所擷取的Season對象都是同一個
		//枚舉類中的每個枚舉都是單例模式的
		Season spring1 = Season.SPRING;
		System.out.println(spring1.equals(spring));
		
		Season summer = Season.SUMMER;
		summer.showInfo();
		
		Season autumn = Season.AUTUMN;
		autumn.showInfo();
		
		Season winter = Season.WINTER;
		winter.showInfo();
		winter.test();
	}
}

//枚舉類可以比較簡便地實作單例模式
enum Season implements ITest {
	//此處相當于在調用私有的有參構造方法
	SPRING("春天", "春暖花開"), //注:枚舉常量之間用逗号隔開
	SUMMER("夏天", "炎炎夏日"),
	AUTUMN("秋天", "秋高氣爽"),
	WINTER("冬天", "寒風凜冽");
	
	private Season(String name, String desc)
	{
		this.name = name;
		this.desc = desc;
	}
	
	public void showInfo()
	{
		System.out.println(this.name + ": " + this.desc);
	}
	
	private final String name; //final修飾的成員變量變成了常量
	private final String desc;
	
	@Override
	public void test() {		
		System.out.println("這是實作ITest接口的test方法");
	}
}

interface ITest{
	void test();
}
           
java枚舉類用法總結

從案例可以總結出對枚舉類的用法:

  • 枚舉類是一種特殊的類,因為已經繼承了枚舉類,是以不能再繼承其他類
  • 枚舉類中的枚舉常量之間用逗号隔開
  • 枚舉常量可以調用本類的構造方法,可以簡便地實作單例模式
  • 通過枚舉類名.枚舉常量名可以擷取該類的一個對象,但是多次執行相同的枚舉類名.枚舉常量名所擷取的是同一個對象
  • 枚舉類可以像普通類一樣去實作接口