JAVA枚舉(一)引入枚舉知識點的前戲
阿新 • • 發佈:2017-12-27
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枚舉(一)引入枚舉知識點的前戲