java中列舉(Enum)使用
列舉的應用:
Enum一般用來表示一組相同型別的常量。如性別、日期、月份、顏色等。對這些屬性用常量的好處是顯而易見的,不僅可以保證單例,且在比較的時候可以用”==”來替換equals。enum簡單的用法一般用於代表一組相同型別的常量值。同時,列舉提供了比常量更多的方法。enum和我們一般使用的類class的位置是一樣的,只是enum裡面的變數都是常量。
用法1:常量
<span style="font-weight: bold; white-space: pre;"> </span>public enum Color {
<span style="white-space: pre;"> </span> RED, BLUE,GREEN,BLACK;
<span style="white-space: pre;"> </span>}<strong>
</strong>
用法2:switch
JDK1.6之前的switch語句只支援int,char,enum型別,使用列舉,能讓我們的程式碼可讀性更強。
enum Signal{
GREEN,RED,YELLOW
}
public class TrafficLight{
Signal color=Signal.RED;
swich(color){
case:GREEN color=Signal.GREEN;
case:RED color=Signal.RED;
case:YELLOW color=Signal.YELLOW;
}
</pre><strong><span style="white-space:pre"> </span>用法3:向列舉中新增新的方法(必須在例項變數後新增一個封號“;”)</strong></div><div><span style="white-space:pre"><span style="white-space: pre;"><span style="white-space: pre;"></span></span></span><pre name="code" class="java" style="font-weight: bold;font-size:18px;">public enum Color {
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLOW("黃色", 4) <span style="color:#ff0000;">;//必須新增封號</span>
// 成員變數
private <span style="color:#ff0000;">final</span> String name;
private <span style="color:#ff0000;">final</span> int index;
// 構造方法,必須私有
private Color(String name, int index) {
this.name = name;
this.index = index;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getIndex() { return index; }
public void setIndex(int index) { this.index = index; }
}
<span style="white-space:pre"> </span>用法4:覆蓋列舉中的方法
<span style="font-weight: bold;font-size:18px; white-space: pre;"> </span><span style="font-size:14px;">(toString 覆蓋)</span>
<span style="font-size:14px;"><span style="white-space:pre"> </span></span><pre name="code" class="java">public String toString() {
return this.index + "_" + this.name;
}
1.首先,它不是型別安全的。你必須確保是int其次,你還要確保它的範圍是0和1最後,很多時候你列印出來的時候,你只看到 1 和0 ,但其沒有看到程式碼的人並不知道你的企圖,拋棄你所有舊的public static final常量
2. 可以建立一個enum類,把它看做一個普通的類。除了它不能繼承其他類了。(java是單繼承,它已經繼承了Enum),可以新增其他方法,覆蓋它本身的方法
3. switch()引數可以使用enum了
4. values()方法是編譯器插入到enum定義中的static方法,所以,當你將enum例項向上轉型為父類Enum是,values()就不可訪問了。解決辦法:在Class中有一個getEnumConstants()方法,所以即便Enum介面中沒有values()方法,我們仍然可以通過Class物件取得所有的enum例項
5. 無法從enum繼承子類,如果需要擴充套件enum中的元素,在一個介面的內部,建立實現該介面的列舉,以此將元素進行分組。達到將列舉元素進行分組。
6. 使用EnumSet代替標誌。enum要求其成員都是唯一的,但是enum中不能刪除新增元素。
7. EnumMap的key是enum,value是任何其他Object物件。
8. enum允許程式設計師為eunm例項編寫方法。所以可以為每個enum例項賦予各自不同的行為。
9. 使用enum的職責鏈(Chain of Responsibility) .這個關係到設計模式的職責鏈模式。以多種不同的方法來解決一個問題。然後將他們連結在一起。當一個請求到來時,遍歷這個鏈,直到鏈中的某個解決方案能夠處理該請求。
相關文章
- Java 列舉(enum)Java
- java enum(列舉)使用詳解 + 總結Java
- Java - Enum 列舉型別Java型別
- Java —— 列舉類(enum 類)Java
- Java 列舉 enum 詳解Java
- java基礎:enum列舉Java
- 再談java列舉enumJava
- 關於Java中列舉Enum的深入剖析Java
- JAVA 基礎 - ENUM 列舉的簡單使用Java
- 聊聊TypeScript中列舉物件(Enum)TypeScript物件
- Java列舉型別enum的詳解及使用Java型別
- 聊一聊Java的列舉enumJava
- TypeScript 列舉enumTypeScript
- Java enum列舉類詳解 列舉的常見用法Java
- Java enum 列舉還可以這麼用Java
- ENUM列舉型別型別
- iOS - OC Enum 列舉iOS
- Java列舉enum可以有抽象方法! -RecepİnançJava抽象NaN
- Java列舉:小小enum,優雅而乾淨Java
- 【python】Enum 列舉類Python
- 使用列舉ENUM替換Switch或If-Else
- mysql之ENUM列舉型別MySql型別
- 認知列舉(C# Enum)C#
- Java 列舉(enum) 詳解7種常見的用法Java
- Java列舉使用Java
- 從JDK角度認識列舉enumJDK
- 優雅使用前端列舉Enum,符合國標的那種!前端
- java中的列舉Java
- 【java】【列舉使用技巧】Java
- 透過列舉enum實現單例單例
- C++typedef宣告,enum列舉型別C++型別
- Kotlin-17.列舉類(enum class)Kotlin
- C/C++列舉enum分別列印輸出列舉子和列舉值的方法C++
- JAVA列舉使用詳解Java
- Kotlin——中級篇(五):列舉類(Enum)、介面類(Interface)詳解Kotlin
- java中的列舉型別Java型別
- Java雙屬性列舉使用Java
- 【C/C++】C和C++11之enum列舉的使用細節C++