1. 關(guān)于Java Enum:
學(xué)過C/C++等語言的人,應(yīng)該都對Enum類型略知一二。Enum一般用來表示一組相同類型的常量。如性別、日期、月份、顏色等。對這些屬性用常量的好處是顯而易見的,不僅可以保證單例,且比較時候可以用”==”來替換equals。是一種好的習(xí)慣。JDK1.5之前沒有Enum這個類型,那時候一般用接口常量來替代。有了JavaEnum之后,可以更貼近的表示這種常量。
2. 如何使用Java Enum
簡單的用法:JavaEnum簡單的用法一般用于代表一組常用常量,可用來代表一類相同類型的常量值。如:
性別:
public enum SexEnum {
}
顏色:
public enum Color {
}
枚舉對象里面的值都必須是唯一的。
可以通過Enum類型名直接引用該常量,如SexEnum.male,Color.RED.
復(fù)雜用法:Java為枚舉類型提供了一些內(nèi)置的方法,同事枚舉常量還可以有自己的方法??梢院芊奖愕谋闅v枚舉對象,看個下面的例子:
1. 代碼一 WeekDay.java:
public enum WeekDay {
Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri(
private final String day;
private WeekDay(String day) {
}
public static void printDay(int i){
}
public String getDay() {
}
}
2.
public class WeekDayTest {
}
輸出結(jié)果為:
Tue====>Tuesday
Wed====>Wednesday
Thu====>Thursday
Fri====>Friday
Sat====>Saturday
Sun====>Sunday
Fri
3. Java Enum原理
Java Enum類型的語法結(jié)構(gòu)盡管和java類的語法不一樣,應(yīng)該說差別比較大。但是經(jīng)過編譯器編譯之后產(chǎn)生的是一個class文件。該class文件經(jīng)過反編譯可以看到實際上是生成了一個類,該類繼承了java.lang.Enum<E>.
WeekDay經(jīng)過反編譯(javap WeekDay命令)之后得到的內(nèi)容如下(去掉了匯編代碼):
public final class WeekDay extends java.lang.Enum{
}
所以實際上Enum類型就是以Java類來實現(xiàn)的,沒有什么新的特點,只不過java編譯器幫我們做了語法的解析和編譯。完全也可以自己實現(xiàn)。但是既然有這樣方便一個東西,當然會去用了。