2007年3月21日 星期三

列舉型別

J2SE 5.0最新的使用方式:列舉型別(enumerated type)
(跟java.util.Enumeration一點關係都沒有)


example
==========================================================================
//MyWeek可視為類別,所以可以單獨寫或內類別
enum MyWeek{
mw0("星期日"),//呼叫建構方法
mw1("星期一"),
mw2("星期二"),
mw3("星期三"),
mw4("星期四"),
mw5("星期五"),
mw6("星期六");//分號表示列舉宣告結束

private String name;

//1.對應上面的呼叫
//2.注意:此建構方法的存取方法只能private或不宣告,(否則會compiler error)
宣告成private是比較貼切的,因為enum的精神就是不讓使用者自己建構物件,
只能使用程式設計師所定義的元件

private MyWeek(String name){
this.name=name;
}

//須OverRide

public String toString(){
return name;
}
}
public class JavaTest{
public static void main(String[] args){
MyWeek m=MyWeek.mw4;

/*列舉型別非常特殊的使用方式,switch可以引入列舉變數,
不再限定使用int型別,在實務上非常的實用。*/

switch(m){
case mw0:
System.out.println(0);
break;
case mw1:
System.out.println(1);
break;
case mw2:
System.out.println(2);
break;
case mw3:
System.out.println(3);
break;
case mw4:
System.out.println(4);
break;
case mw5:
System.out.println(5);
break;
case mw6:
System.out.println(6);
break;
}
}
}

/*
這是舊式的寫法
1.缺點一:使用者可以自行建立MyWeek物件 例:MyWeek mw=new MyWeek("星期八",10);

class MyWeek{
public static final MyWeek mw1=new MyWeek("星期一",1);
public static final MyWeek mw2=new MyWeek("星期二",2);
public static final MyWeek mw3=new MyWeek("星期三",3);
public static final MyWeek mw4=new MyWeek("星期四",4);
public static final MyWeek mw5=new MyWeek("星期五",5);
public static final MyWeek mw6=new MyWeek("星期六",6);
public static final MyWeek mw0=new MyWeek("星期日",0);

private String name;
private int number;
MyWeek(String name,int number){
this.name=name;
this.number=number;
}
public String toString(){
return name;
}
public int getNumber(){
return number;
}
}
*/

沒有留言: