學習Java: 1.5:Enum
注意點:
1。所有建立的列舉型別都擴充套件於 java.lang.Enum. Enum 是在J2SE 5.0
裡定義的一個新類, 它本身不是列舉型別.在建立列舉型別時,必須用enum
關鍵字,不能直接地定義一個繼承Enum的類來建立一個列舉型別,儘管所有建立的列舉型別實際上都是Enum 的子類.
2。列舉型別裡定義的每一個值都是列舉型別的一個例項,預設時都將對映到Enum(String name, int ordinal) 建構函式中.列舉型別可以使用引數為定義一些自己的建構函式。
另外要強調的兩點:
一是這些列舉型別的建構函式都是私有的.它是不能被其它的類或者其它的列舉型別呼叫的. 而且這個私有修飾符是由編譯器自動加的,如果我們定義這些建構函式時,在前面加上public 修飾符, 就會導致編譯錯誤,
二是變數定義必須在列舉型別值定義之後
3。
列舉型別每一個值都是public, static and
final的.也就是說,這些值是唯一的而且一旦定義了是不能被重寫或修改.而且儘管在列舉型別每一個值宣告時沒有出現static關鍵字,
實際上值都是靜態的, 而且我們不能在值前面加上static, public,final 修飾符
4。Switch語句裡使用列舉型別時,一定不能在每一個列舉型別值的前面加上列舉型別的類名(case後面的值),否則編譯器就會報錯
5。
在J2SE 5.0 的java.util 程式包中提供兩個新類:EnumMap 和
EnumSet,這兩個類與列舉型別的結合應用可使以前非常繁瑣的程式變得簡單方便.EnumMap 類提供了java.util.Map
介面的一個特殊實現,該介面中的鍵(key)是一個列舉型別
6。特定於常量的類主體 :
提到列舉型別可以定義自己的函式,其實更進一步,列舉型別的每一個值都可以實現列舉型別裡定義的抽象函式
------------------------------------------
enum Size {
Small(0.8),
Medium(1.0),
Large(1.2);
private double pricingFactor; // 符合2.2的要求,變數定義必須在列舉型別值定義之後
Size(double p) {
pricingFactor = p;
}
public double getPricingFactor() {
return pricingFactor;
}
}
---------------------------------------------
enum的預定義方法
完整的方法集合(E 表示列舉型別自身):
* public int compareTo(E e)
* public boolean equals(Object o)
* public final Class
* public int hashCode()
* public String name()
* public int ordinal()
* public String toString()
* public static
一些方法看起來很熟悉,而其他一些方法則是特定於 Enum 類的。
compareTo
()、equals() 和 hashCode() 方法是典型的 Object 和 Comparable 方法,其中,compareTo()
報告宣告元素的順序。name() 和 ordinal() 方法返回建構函式引數,而 toString() 返回名稱。
getDeclaringClass()
和 valueOf() 方法需要稍多一些解釋。getDeclaringClass() 方法類似於 Object 的 getClass()
方法,但它沒必要返回相同的類。根據這個方法的 Javadoc 的說明:對於具有特定於常量的類主體的 enum 常量,該方法返回的值可能不同於
Object.getClass() 方法返回的值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-960977/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java原始碼學習之EnumJava原始碼
- 學習Java:1.5:增強的forJava
- Java 列舉(enum)Java
- Java Enum 個人見解Java
- Java - Enum 列舉型別Java型別
- Java —— 列舉類(enum 類)Java
- Java 列舉 enum 詳解Java
- java基礎:enum列舉Java
- 深入掌握Java中的enumJava
- java中列舉(Enum)使用Java
- 再談java列舉enumJava
- java基礎:Enum — 原始碼分析Java原始碼
- java學習之道 --- 如何學習java?Java
- 聊一聊Java的列舉enumJava
- Java網路 1.5 HTML 骨架JavaHTML
- Java 學習Java
- Java學習Java
- java enum(列舉)使用詳解 + 總結Java
- Java enum 列舉還可以這麼用Java
- 新手如何學習Java——Java學習路線圖Java
- Java學習之路 -- Java怎麼學?Java
- 《JAVA學習指南》學習筆記Java筆記
- Blazor和Vue對比學習(基礎1.5):雙向繫結BlazorVue
- JAVA JDK1.5-1.9新特性JavaJDK
- Java學習—java-RedisJavaRedis
- java學習之路Java
- Java學習自學Java
- Java學習方法Java
- Java學習:反射Java反射
- Java學習_反射Java反射
- 學習Java系列Java
- java學習6Java
- 如何學習JavaJava
- 學習java之路Java
- Java學習概要Java
- Java NIO 學習Java
- Java的學習Java
- Java反射學習Java反射