1. 程式人生 > >JAVA枚舉(一)引入枚舉知識點的前戲

JAVA枚舉(一)引入枚舉知識點的前戲

java枚舉

/* 例子:定義一個員工類Employees,使用一個變量restday來表示他哪一天休息 */ //-------------------------------version:0.1---------------------- /* class Employees { private int restday; //一周的哪一天休息 public int getRestday() { return restday; } public void setRestday(int restday) { this.restday = restday; } } public class EnumerateDemo { public static void main(String[] args) { Employees e = new Employees(); //創建員工對象 e.setRestday(2); //設置休息時間 int restday = e.getRestday(); if(restday == 6 || restday == 7) { System.out.println("周末休息..."); } else { System.out.println("周一至周五休息..."); } } } 上述代碼的問題: 1、數據類型不安全 (可以傳入float等) 2、數據範圍不安全 (可以設置任何數字) 3、數據表示的含義不明確 (3表示什麽?) */ //----------------------------version:0.2(對發現的問題進行改進)----------------------------- //定義一個星期幾的常量類 /* class Weekday { public static final int Monday = 1; public static final int Tuesday = 2; public static final int Wednesday = 3; public static final int Thursday = 4; public static final int Friday = 5; public static final int Saturday = 6; public static final int Sunday = 7; } class Employees { private int restday; //一周的哪一天休息 public int getRestday() { return restday; } public void setRestday(int restday) { this.restday = restday; } } public class EnumerateDemo { public static void main(String[] args) { Employees e = new Employees(); //創建員工對象 e.setRestday(Weekday.Wednesday); //通過引用常量設置休息時間 int restday = e.getRestday(); //得到值 if(restday == 6 || restday == 7) { System.out.println("周末休息..."); } else { System.out.println("周一至周五休息..."); } } } 解決的問題: 1、數據表示的含義明確性已經提高,Monday = 1; 表示周一 依然存在問題: 1、數據類型還是不安全 2、數據範圍不安全 (還是可以設置任何數字) */ //--------------------------------version:0.3-------------------------------- //將原來的常量類改寫:封裝成對象的方式 class Weekday { private Weekday(){}; //預防創建對象,私有化構造函數 public static final Weekday Monday = new Weekday(); //因為int類型不安全,因此改寫對象,Monday變量存儲的是Weekday類型的對象 public static final Weekday Tuesday = new Weekday(); public static final Weekday Wednesday = new Weekday(); public static final Weekday Thursday = new Weekday(); public static final Weekday Friday = new Weekday(); public static final Weekday Saturday = new Weekday(); public static final Weekday Sunday = new Weekday(); } class Employees { private Weekday restday; //一周的哪一天休息(數據類型為Weekday) public Weekday getRestday() { return restday; } public void setRestday(Weekday restday) //數據類型為Weekday { this.restday = restday; } } public class EnumerateDemo { public static void main(String[] args) { Employees e = new Employees(); //創建員工對象 e.setRestday(Weekday.Wednesday); //通過類名.對象的方式來設置休息時間 Weekday restday = e.getRestday(); //用Weekday類型的變量restday來接收得到的值 if(restday == Weekday.Saturday || restday == Weekday.Sunday) { System.out.println("周末休息..."); } else { System.out.println("周一至周五休息..."); } } } /*解決了的問題: 1、數據類型安全了 2、數據範圍安全了*/ //--------------------version:4.(引入枚舉)--------------------------------- //見JAVA枚舉(二),該知識點努力更新中...


JAVA枚舉(一)引入枚舉知識點的前戲