Java基礎之列舉

2021-07-05 19:16:46 字數 1578 閱讀 3452

列舉

列舉enum

列舉就是要讓某個型別的變數的取值,只能為若干個固定值中的乙個,否則,編譯器報錯

列舉可以讓編譯器在編譯時就可以控制源程式中填寫的非法值,普通變數的方式在開發階段無法實現這一目標。

列舉是一種特殊的類,列舉中的每乙個元素都是乙個例項物件

用普通類如何實現列舉功能,定義乙個weekday的類來模擬列舉功能。

public abstract class weekday ;

//每乙個元素都用靜態來表示

public final static weekday sun = new weekday()

};public final static weekday mon = new weekday()

};//抽象方法

public abstract weekday nextday();

public string tostring()

}package enume;

public class eumedemo

}

列舉就相當於乙個類,其中也可以定義構造方法、成員變數、普通方法和抽象方法。

列舉元素必須位於列舉體中的最開始部分,列舉元素列表的後要有分號與其他成員分隔。

把列舉中的成員方法或變數等放在列舉元素的前面,編譯器報告錯誤。

構造方法必須是私有的

在列舉物件後加上乙個大括號,可以指定用那個構造方法

只要用到了列舉類,它裡面的所有物件(元素)都會被初始化

列舉只有乙個成員時,就可以作為一種單例的實現方式。

public enum weedday1

private weedday1(int day)

}

普通方法就是建立物件,然後呼叫

主要是抽象方法要注意,帶有抽象方法的列舉, 每個元素分別是由列舉類的子類來生成的例項物件,這些子類採用類似內部類的方式進行定義。

public enum trafficlamp

},green(45)

},yellow(5)

};private int time;

//構造方法

private trafficlamp(int time)

//抽象方法

public abstract trafficlamp nextlamp();

}}

列舉中的一些方法:

靜態方法:

valueof(classenumtype, string name) 返回帶指定名稱的指定列舉型別的列舉常量。

values()返回列舉內所有元素的陣列

非靜態:

name():返回常量名稱

ordinal():返回列舉常量的位置

getclass():返回類名

public enum weekday 

public class demo

}}

java基礎之列舉

讓某個型別的變數的值只能取若干個值中的乙個,否則,編譯器報錯。將原先執行時才能發現的問題提前到編譯時揭露。也是jdk1.5新特性 實現原理 1 將建構函式私有化,使其他人無法建立物件 2 定義預定數量的物件,並用public 和final static修飾,供使用者呼叫 3 可以有若干具體或抽象方法...

Java基礎之 列舉

乙個示例的列舉的定義 public enum producttype public static producttype getportraitbyid string name throw new illegalargumentexception illegal argument public st...

Java之列舉型別

用乙個例子來說明 在程式中規定交通燈的取值只能是 red,green,yellow 取其他值就會報錯,並且還能根據當前顏色知道下個顏色.怎麼實現?一 用普通類來實現 public abstract class trafficlamp 取得下個燈 public abstract trafficlamp...