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