Java的枚舉類型
/*!
* Java中的枚舉類型也是類,
* Java中的類都隱含從Object
* 派生,Java中的枚舉類型都
* 隱含從Enum類派生
* Java的枚舉類型一般都是全部大寫
*
* SMALL,MEDIUM,LARGE..
* 都可以看成是其中一個枚舉類型的
* 實例
*
* Java Class反射類型,得到類型對象Class
* 1.<classname>.class
* 2.Class.forName(<classname>)
* 3.<instance>.getClass()
*
* Java類型轉換
* BaseClass bc = new DerivedClass();
* DerivedClass dc = (DerivedClass)bc;
* 更加健壯的做法:
* if(bc instanceof DerivedClass){
* Java中的類型轉換相當於C++
* 中的dynamic_cast
* DerivedClass dc = (DerivedClass)bc;
* }
*/
enum Size{
/*!Java的枚舉類型的值,相當於默認定義的
* 實例的值,並且建議該值放到class文件的最前面*/
SMALL,
MEDIUM,
LARGE,
EXTRA_LARGE;
}
enum Sex{
/*! 這裏就需要構造函數來構造了*/
MALE("m"),
FEMALE("f");
/*!性別的縮寫*/
private String abbr;
/*!要特別注意的是枚舉類型的構造函數必須是private
* 是爲了保證枚舉類型的有限性
*/
private Sex(String abbr) {this.abbr = abbr;}
public String getAbbrevation() { return abbr;}
}
public class JavaEnums{
public static void main(String[] args){
//將枚舉類型的實例toString 轉換成字符串
System.out.println("Small=" + Size.SMALL.toString());
System.out.println("Medium=" + Size.MEDIUM.toString());
//將枚舉類型的字符串通過Enum.valueOf轉換成枚舉類型
System.out.println("Small=" + Enum.valueOf(Size.class, "SMALL"));
System.out.println("Large=" + Enum.valueOf(Size.class, "LARGE"));
//將枚舉類型直接定義成類類型的
System.out.println("Male=" + Sex.MALE.toString());
System.out.println("Female=" + Sex.FEMALE.toString());
System.out.println("Male(Abbr)=" + Sex.MALE.getAbbrevation());
System.out.println("Female(Abbr)=" + Sex.FEMALE.getAbbrevation());
//這裏valueOf指定的是實例的名稱
System.out.println("Male=" + Enum.valueOf(Sex.class, "MALE"));
System.out.println("Female=" + Enum.valueOf(Sex.class, "FEMALE"));
//遍歷枚舉類型中的所有數據
Size[] sizes = Size.values();
Sex[] sexs = Sex.values();
System.out.println("sizes=");
for(Size s : sizes){
System.out.println("s = " + s);
}
System.out.println("sexs=");
for(Sex s : sexs){
System.out.println("sex=" + s);
}
}
}
* Java中的枚舉類型也是類,
* Java中的類都隱含從Object
* 派生,Java中的枚舉類型都
* 隱含從Enum類派生
* Java的枚舉類型一般都是全部大寫
*
* SMALL,MEDIUM,LARGE..
* 都可以看成是其中一個枚舉類型的
* 實例
*
* Java Class反射類型,得到類型對象Class
* 1.<classname>.class
* 2.Class.forName(<classname>)
* 3.<instance>.getClass()
*
* Java類型轉換
* BaseClass bc = new DerivedClass();
* DerivedClass dc = (DerivedClass)bc;
* 更加健壯的做法:
* if(bc instanceof DerivedClass){
* Java中的類型轉換相當於C++
* 中的dynamic_cast
* DerivedClass dc = (DerivedClass)bc;
* }
*/
enum Size{
/*!Java的枚舉類型的值,相當於默認定義的
* 實例的值,並且建議該值放到class文件的最前面*/
SMALL,
MEDIUM,
LARGE,
EXTRA_LARGE;
}
enum Sex{
/*! 這裏就需要構造函數來構造了*/
MALE("m"),
FEMALE("f");
/*!性別的縮寫*/
private String abbr;
/*!要特別注意的是枚舉類型的構造函數必須是private
* 是爲了保證枚舉類型的有限性
*/
private Sex(String abbr) {this.abbr = abbr;}
public String getAbbrevation() { return abbr;}
}
public class JavaEnums{
public static void main(String[] args){
//將枚舉類型的實例toString 轉換成字符串
System.out.println("Small=" + Size.SMALL.toString());
System.out.println("Medium=" + Size.MEDIUM.toString());
//將枚舉類型的字符串通過Enum.valueOf轉換成枚舉類型
System.out.println("Small=" + Enum.valueOf(Size.class, "SMALL"));
System.out.println("Large=" + Enum.valueOf(Size.class, "LARGE"));
//將枚舉類型直接定義成類類型的
System.out.println("Male=" + Sex.MALE.toString());
System.out.println("Female=" + Sex.FEMALE.toString());
System.out.println("Male(Abbr)=" + Sex.MALE.getAbbrevation());
System.out.println("Female(Abbr)=" + Sex.FEMALE.getAbbrevation());
//這裏valueOf指定的是實例的名稱
System.out.println("Male=" + Enum.valueOf(Sex.class, "MALE"));
System.out.println("Female=" + Enum.valueOf(Sex.class, "FEMALE"));
//遍歷枚舉類型中的所有數據
Size[] sizes = Size.values();
Sex[] sexs = Sex.values();
System.out.println("sizes=");
for(Size s : sizes){
System.out.println("s = " + s);
}
System.out.println("sexs=");
for(Sex s : sexs){
System.out.println("sex=" + s);
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.