Java列舉的七種常見用法
JDK1.5引入了新的型別——列舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。
用法一:常量
在JDK1.5 之前,我們定義常量都是: public static fianl…. 。現在好了,有了列舉,可以把相關的常量分組到一個列舉型別裡,而且列舉提供了比常量更多的方法。
public enum Color { RED, GREEN, BLANK, YELLOW }
用法二:switch
JDK1.6之前的switch語句只支援int,char,enum型別,使用列舉,能讓我們的程式碼可讀性更強。
enum Signal { GREEN, YELLOW, RED } public class TrafficLight { Signal color = Signal.RED; public void change() { switch (color) { case RED: color = Signal.GREEN; break; case YELLOW: color = Signal.RED; break; case GREEN: color = Signal.YELLOW; break; } } }
用法三:向列舉中新增新方法
如果打算自定義自己的方法,那麼必須在enum例項序列的最後新增一個分號。而且 Java 要求必須先定義 enum例項。
public enum Color { RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4); // 成員變數 private String name; private int index; // 構造方法 private Color(String name, int index) { this.name = name; this.index = index; } // 普通方法 public static String getName(int index) { for (Color c : Color.values()) { if (c.getIndex() == index) { return c.name; } } return null; } // get set 方法 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; } }
用法四:覆蓋列舉的方法
下面給出一個toString()方法覆蓋的例子。
public enum Color { RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4); // 成員變數 private String name; private int index; // 構造方法 private Color(String name, int index) { this.name = name; this.index = index; } //覆蓋方法 @Override public String toString() { return this.index+"_"+this.name; } }
用法五:實現介面
所有的列舉都繼承自java.lang.Enum類。由於Java 不支援多繼承,所以列舉物件不能再繼承其他類。
public interface Behaviour { void print(); String getInfo(); } public enum Color implements Behaviour{ RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4); // 成員變數 private String name; private int index; // 構造方法 private Color(String name, int index) { this.name = name; this.index = index; } //介面方法 @Override public String getInfo() { return this.name; } //介面方法 @Override public void print() { System.out.println(this.index+":"+this.name); } }
用法六:使用介面組織列舉
public interface Food { enum Coffee implements Food{ BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO } enum Dessert implements Food{ FRUIT, CAKE, GELATO } }
用法七:關於列舉集合的使用
java.util.EnumSet和java.util.EnumMap是兩個列舉集合。EnumSet保證集合中的元素不重複;EnumMap中的key是enum型別,而value則可以是任意型別。關於這個兩個集合的使用就不在這裡贅述,可以參考JDK文件。
關於列舉的實現細節和原理請參考:參考資料:《Thinking in Java》第四版
相關文章
- Java 列舉(enum) 詳解7種常見的用法Java
- Java enum列舉類詳解 列舉的常見用法Java
- Linux命令列:cURL的十種常見用法Linux命令列
- Java 列舉 switch的用法Java
- JavaScript陣列常見用法JavaScript陣列
- 列舉一下常見的final類?
- 8種常見SQL錯誤用法SQL
- 常見的五種三列布局
- 七種常見的陣列排序演算法整理(C語言版本)陣列排序演算法C語言
- MySQL常見的8種SQL錯誤用法MySql
- 什麼是常見缺陷列舉 (CWE)
- Swift列舉的全用法Swift
- 常見的七種Hadoop和Spark專案案例HadoopSpark
- Java中常見的十八種異常!Java
- numpy學習筆記 – numpy陣列的常見用法筆記陣列
- 七種常見的物件導向設計原則物件
- vim常見用法
- useradd 命令的常見用法
- nslookup命令的常見用法
- Java第七天-常用類及列舉Java
- 3種常見的Web前端陣列排序方式!Web前端陣列排序
- rust學習七、列舉Rust
- java中的列舉Java
- SQLNET.ORA 的常見用法SQL
- 常見的錯誤 SQL 用法SQL
- Java列舉Java
- Java 列舉、JPA 和 PostgreSQL 列舉JavaSQL
- 淺談常見的七種加密演算法及實現加密演算法
- js陣列的常見操作( push、pop、unshift、shift、splice、concat、 join)的用法JS陣列
- MySQL 效能最佳化:8 種常見 SQL 錯誤用法!MySql
- axios的一些常見用法iOS
- 類别範本的常見用法
- JSP C 標籤的常見用法JS
- Git SSH 命令常見用法Git
- linux nc (Netcat) 常見用法Linux
- Java 列舉(enum)Java
- java列舉類Java
- Java Stream常見用法彙總,開發效率大幅提升Java
- Java列舉-通過值查詢對應的列舉Java