關(guān)鍵字:enum。枚舉就是要讓某個類型的變量的取值只能為若干固定值之中的一個。它是一個特殊的類,其中的每一個元素都是該類的一個對象。注意 : 因為不能New 枚舉的實(shí)
力,所以枚舉不能繼承其他類,也不能被其他類繼承。
為什么要有枚舉?
問題:要定義星期幾或性別的變量,該怎么定義?假設(shè)用1-7分別表示星期一到星期日,但有人可能會寫成int weekday = 0;或即使使用常量方式也無法阻止意外。枚舉就是要讓某個
類型的變量的取值只能為若干個固定值中的一個,否則,編譯器就會報錯。枚舉可以讓編譯器在編譯時就可以控制源程序中填寫的非法值,普通變量的方式在開發(fā)階段無法實(shí)現(xiàn)這
一目標(biāo)。
用普通類如何實(shí)現(xiàn)枚舉功能,定義一個Weekday的類來模擬枚舉功能。
1、私有的構(gòu)造方法;
2、每個元素分別用一個公有的靜態(tài)成員變量表示。 可以有若干公有方法或抽象方法。采用抽象方法定義nextDay就將大量的if.else語句轉(zhuǎn)移成了一個個獨(dú)立的類。
enum TrafficLamp{ /** * 對于這道題目而言,使用的其實(shí)是匿名對象內(nèi)部類! * 枚舉最簡單的創(chuàng)建對象方法:RED,YELLOW,GREEN * 對于普通的類而言,創(chuàng)建對象:Person p = new Person(); * */ RED(30){ @Override public TrafficLamp nextLamp() { return YELLOW; } }, YELLOW(40){ @Override public TrafficLamp nextLamp() { return GREEN; } }, GREEN(45){ @Override public TrafficLamp nextLamp() { return RED; } }; public abstract TrafficLamp nextLamp(); PRivate int time; private TrafficLamp(int time){ this.time = time; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } }public class EnumDemo { public static void main(String[] args) { System.out.println(TrafficLamp.RED.nextLamp()); System.out.println(TrafficLamp.RED.nextLamp().getTime()); }}
新聞熱點(diǎn)
疑難解答