枚舉
1 //枚舉綜合測試
2 public class EnumTest {
3
4 /**
5 * @param args
6 */
7 public static void main(String[] args) {
8 // TODO Auto-generated method stub
9 WeekDay1 Mon=WeekDay1.MON;//實例化
10 System.out.println(Mon.nextday()); //調用枚舉類內的方法
11 WeekDay weekday2=WeekDay.FRI;
12 System.out.println(weekday2);
13 System.out.println(weekday2.name());//顯示枚舉元素名稱
14 System.out.println(weekday2.ordinal());//顯示枚舉元素索引
15 System.out.println(WeekDay.valueOf("SUN"));//根據字符串得到枚舉對象
16 //WeekDay.values() 返回枚舉元素數組
17 System.out.println(WeekDay.values().length);
18
19 System.out.println(TrafficLamp.valueOf("RED").nextlamp());
20 }
21
22 public enum WeekDay{
23 SUN(1),MON,TUE,WED,THI,FRI,SAT; //枚舉元素必須位于第一位
24 /*枚舉的構造方法必須私有*/
25 private WeekDay(){System.out.println("first");}
26 private WeekDay(int day){System.out.println("second");}
27 }
28
29 public enum TrafficLamp{
30 /*
31 * 帶有抽象方法的枚舉
32 * 每個元素都是枚舉的子類
33 * 在枚舉元素{}中 實現抽象方法
34 *
35 * 只有一個元素的枚舉,可以實現單例模式
36 * */
37 RED(30){
38 public TrafficLamp nextlamp(){
39 return GREEN;
40 }
41 },GREEN(45){
42 public TrafficLamp nextlamp(){
43 return YELLOW;
44 }
45 },YELLOW(5){
46 public TrafficLamp nextlamp(){
47 return RED;
48 }
49 };
50
51 public abstract TrafficLamp nextlamp();
52 private int time;
53 private TrafficLamp(int time){this.time=time;}
54 }
55
56 }
57
2 public class EnumTest {
3
4 /**
5 * @param args
6 */
7 public static void main(String[] args) {
8 // TODO Auto-generated method stub
9 WeekDay1 Mon=WeekDay1.MON;//實例化
10 System.out.println(Mon.nextday()); //調用枚舉類內的方法
11 WeekDay weekday2=WeekDay.FRI;
12 System.out.println(weekday2);
13 System.out.println(weekday2.name());//顯示枚舉元素名稱
14 System.out.println(weekday2.ordinal());//顯示枚舉元素索引
15 System.out.println(WeekDay.valueOf("SUN"));//根據字符串得到枚舉對象
16 //WeekDay.values() 返回枚舉元素數組
17 System.out.println(WeekDay.values().length);
18
19 System.out.println(TrafficLamp.valueOf("RED").nextlamp());
20 }
21
22 public enum WeekDay{
23 SUN(1),MON,TUE,WED,THI,FRI,SAT; //枚舉元素必須位于第一位
24 /*枚舉的構造方法必須私有*/
25 private WeekDay(){System.out.println("first");}
26 private WeekDay(int day){System.out.println("second");}
27 }
28
29 public enum TrafficLamp{
30 /*
31 * 帶有抽象方法的枚舉
32 * 每個元素都是枚舉的子類
33 * 在枚舉元素{}中 實現抽象方法
34 *
35 * 只有一個元素的枚舉,可以實現單例模式
36 * */
37 RED(30){
38 public TrafficLamp nextlamp(){
39 return GREEN;
40 }
41 },GREEN(45){
42 public TrafficLamp nextlamp(){
43 return YELLOW;
44 }
45 },YELLOW(5){
46 public TrafficLamp nextlamp(){
47 return RED;
48 }
49 };
50
51 public abstract TrafficLamp nextlamp();
52 private int time;
53 private TrafficLamp(int time){this.time=time;}
54 }
55
56 }
57
1 //模擬枚舉,枚舉是一種特殊的類,每個元素都是枚舉的實例對象,枚舉可以有自己的屬性和方法
2 public abstract class WeekDay1 {
3 private WeekDay1(){}//私有化構造函數,則外界無法實例化
4
5 public final static WeekDay1 MON=new WeekDay1(){
6
7 @Override
8 public WeekDay1 nextday() {
9 // TODO Auto-generated method stub
10 return SUN;
11 }
12 //WeekDay的子類,要實現抽象方法
13 };
14 //定義成員
15 public final static WeekDay1 SUN=new WeekDay1(){
16 @Override
17 public WeekDay1 nextday(){
18 return MON;
19 }
20 };
21
22 public abstract WeekDay1 nextday(); //定義一個抽象方法
23 /* public WeekDay nexday(){
24 this是指該對象,因為類的非靜態方法只能有對象來調用
25 *
26 if(this==MON){
27 return SUN;
28 }else{
29 return MON;
30 }
31 }*/
32
33 public String toString(){
34 return this==MON?"MON":"SUN";
35 }
36
37 }
38
2 public abstract class WeekDay1 {
3 private WeekDay1(){}//私有化構造函數,則外界無法實例化
4
5 public final static WeekDay1 MON=new WeekDay1(){
6
7 @Override
8 public WeekDay1 nextday() {
9 // TODO Auto-generated method stub
10 return SUN;
11 }
12 //WeekDay的子類,要實現抽象方法
13 };
14 //定義成員
15 public final static WeekDay1 SUN=new WeekDay1(){
16 @Override
17 public WeekDay1 nextday(){
18 return MON;
19 }
20 };
21
22 public abstract WeekDay1 nextday(); //定義一個抽象方法
23 /* public WeekDay nexday(){
24 this是指該對象,因為類的非靜態方法只能有對象來調用
25 *
26 if(this==MON){
27 return SUN;
28 }else{
29 return MON;
30 }
31 }*/
32
33 public String toString(){
34 return this==MON?"MON":"SUN";
35 }
36
37 }
38
posted on 2010-12-29 13:15 杰點 閱讀(125) 評論(0) 編輯 收藏 所屬分類: JAVA