列舉類的使用

2022-05-22 13:21:09 字數 2044 閱讀 1786

類的物件只有有限個,確定的,我們稱之為列舉類。

例如  星期,執行緒狀態,性別,季節等。

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

如果列舉類中只有乙個物件,則可以作為乙個單例模式的實現方式

方式一:jdk 1.5 之前,自定義列舉類

//自定義列舉類

class season

public string getseasonname()

public string getseasondesc()

@override

public string tostring() ';

}//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("冬天","冰天雪地");

}

對定義的列舉類進行測試:

public class seasontest 

}}

方式二:jdk1.5 以後,可以使用enum關鍵字定義列舉類
//使用enum關鍵字定義列舉類

enum season1

public string getseasonname()

public string getseasondesc()

}

對使用enum關鍵字定義的列舉類進行測試:

public class seasontest2

values()方法:返回列舉型別的物件陣列,該方法可以很方便地遍歷所有的列舉類

valueof(string str)方法:可以把乙個字串轉化為對應的列舉類物件,要求字串必須是列舉類物件

tostring()方法:返回當前列舉類物件常量的名稱

public class seasontest1

定義的列舉類實現上述介面:

//使用enum關鍵字定義列舉類

enum season2 implements messageinfo

},summer ("夏天", "夏日炎炎")

},autumn ("秋天", "秋高氣爽")

},winter ("冬天", "冰天雪地")

};//2.宣告season物件的屬性:private final 修飾

private final string seasonname;

private final string seasondesc;

//3.私有化類的構造器,並給物件屬性賦值

private season2(string seasonname, string seasondesc)

public string getseasonname()

public string getseasondesc()

}

對其進行測試:

public class seasontest2 

//valueof(string str) 返回列舉類中物件名為objname的物件,

// 如果沒有objname的列舉類物件,則拋異常

system.out.println("*****************#");

season2 winter = season2.valueof("winter");

system.out.println(winter);

winter.show();

/*列印結果為:

winter

冬天*/

}}

使用列舉類

當我們需要定義常量時,乙個辦法是用大寫變數通過整數來定義,例如月份 jan 1 feb 2 mar 3 nov 11 dec 12好處是簡單,缺點是型別是int,並且仍然是變數。更好的方法是為這樣的列舉型別定義乙個class型別,然後,每個常量都是class的乙個唯一例項。python提供了enum...

列舉類的使用例子

列舉類的使用,有建構函式,有函式喲 package com.bird.test import org.junit.test public class eumetest enum week tue 星期二 wed 星期三 thu 星期四 fri 星期五 sat 星期六 sun 星期日 private ...

簡單的使用列舉類

列舉類使用例子 public enum systemusertype public string getlabel public static systemusertype getenum string name for systemusertype enums values return null...