Java 列舉(enum) 詳解7種常見的用法(轉)
原文:https://blog.csdn.net/qq_27093465/article/details/52180865
JDK1.5引入了新的型別——列舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。
大師兄我又加上自己的理解,來幫助各位理解一下。
用法一:常量
在JDK1.5 之前,我們定義常量都是: public static fianl.... 。現在好了,有了列舉,可以把相關的常量分組到一個列舉型別裡,而且列舉提供了比常量更多的方法。
Java程式碼- 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 例項。
Java程式碼- 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()方法覆蓋的例子。
Java程式碼- 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 不支援多繼承,所以列舉物件不能再繼承其他類。
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);
- }
- }
用法六:使用介面組織列舉
Java程式碼
- public interface Food {
- enum Coffee implements Food{
- BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
- }
-
相關推薦
Java 列舉(enum) 詳解7種常見的用法
JDK1.5引入了新的型別——列舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。 大師兄我又加上自己的理解,來幫助各位理解一下。 用法一:常量 在JDK1.5 之前,我們定義常量都是: public static final.... 。現在好
Java 列舉(enum) 詳解7種常見的用法(轉)
原文:https://blog.csdn.net/qq_27093465/article/details/52180865JDK1.5引入了新的型別——列舉。在 Java 中它雖然算個“小”功能,卻給我的開發帶來了“大”方便。大師兄我又加上自己的理解,來幫助各位理解一下。用法
java列舉(enum)詳解
一.為什麼要使用列舉. 需求:定義一個Employee(員工),使用一個變數restday來表示他哪一天休息.如圖:
Java 列舉 enum 詳解
> 本文部分摘自 On Java 8 ## 列舉型別 Java5 中添加了一個 enum 關鍵字,通過 enum 關鍵字,我們可以將一組擁有具名的值的有限集合建立為一種新的型別,這些具名的值可以作為常規的程式元件使用,例如: ```java public enum Spiciness {
Java集合框架詳解--Collection介面簡單介紹(二)
一、Collection介面簡單介紹 Collection介面是處理物件集合的根介面,其中定義了很多對元素進行操作的方法。Collection介面有兩個主要的子介面List和Set,注意Map不是Collection的子介面。 Collection介面中的方
Spring Boot配置檔案詳解-ConfigurationProperties和Value優缺點-(轉)好文
文章轉自 http://www.cnblogs.com/itdragon/p/8686554.html Spring Boot提供了兩種常用的配置檔案,分別是properties檔案和yml檔案。他們的作用都是修改Spring Boot自動配置的預設值。相對於properties檔案而言,yml檔
javascript 面向物件的幾種常見寫法(轉)
//定義Circle類,擁有成員變數r,常量PI和計算面積的成員函式area() 文章轉自:http://www.iteye.com/topic/434462 1.工廠方式 var Circle = function() { var obj = new Object
AppCrawler自動化遍歷使用詳解(版本2.1.0 )(轉)
AppCrawle是自動遍歷的app爬蟲工具,最大的特點是靈活性,實現:對整個APP的所有可點選元素進行遍歷點選。 優點: 1.支援android和iOS, 支援真機和模擬器 2.可通過配置來設定遍歷的規則(比如設定黑名單和白名單,提高遍歷的覆蓋率)
C++中列舉enum詳解
轉載部落格地址:https://blog.csdn.net/bruce_0712/article/details/54984371 眾所周知,C/C++語言可以使用#define和const建立符號常量,而使用enum工具不僅能夠建立符號常量,還能定義新
Java執行緒詳解(7)-執行緒的排程
Java執行緒:執行緒的排程-休眠 Java執行緒排程是Java多執行緒的核心,只有良好的排程,才能充分發揮系統的效能,提高程式的執行效率。 這裡要明確的一點,不管程式設計師怎麼編寫排程,只能最大限度的影響執行緒執行的次序,而不能做到精準控
Java列舉型別詳解(原理+用法)
可以這麼說,Java的列舉型別本來是不存在的,但Java發了個"語法糖",就有了列舉型別。Java從JDK1.5開始支援列舉,通常一個特性如果在一開始沒有提供,在語言發展後期才新增,會遇到一個問題,就是向後相容性的問題。像Java在1.5中引入的很多特性,為了向後相容,編譯
EL表示式常見用法詳解 EL表示式常見用法詳解
原 EL表示式常見用法詳解 2017年02月02日 17:33:21 LiQiyaoo 閱讀數:32634 <
位運算詳解及競賽常見用法入門
位運算 程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算說穿了,就是直接對整數在記憶體中的二進位制位進行操作。比如,and運算本來是一個邏輯運算子,但整數與整數之間也可以進行and運算。舉個例子,6的二進位制是110,11的二進位制是1011,那麼6 an
OSI七層詳解之四 傳輸層(Transport)
http 計算機 地址 包括 分組 tcp aik 全部 滿足 一、簡介 第四層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段(segments)而UDP協議的數據單元稱為“數據報(datagrams)
詳解 javascript 中的比較(==和===)
不一致 mit 如果 asc onu tin 算法 復雜 undefine 抽象相等比較算法 比較運算 x==y, 其中 x 和 y 是值,產生 true 或者 false。這樣的比較按如下方式進行: 若 Type(x) 與 Type(y) 相同, 則 若 Type(x)
串口驅動程序設計詳解---串口初始化(上)
flag more ini board 幾分鐘 cor configure 設計 rom 串口驅動程序設計詳解---串口初始化(上) 原創 2016年05月19日 23:51:13 標簽: 串口驅動初始化流程 / 內核源碼分析 / linux / ARM / 架構
詳解C#特性和反射(三)
typeinfo ref 都是 system.in 全局 color com 依然 程序 類型信息(Type Information)用來表示類型聲明的信息,通過抽象基類System.Type的實例存儲這些信息,當使用反射時,CLR獲取指定類型的Type對象,通過這個對
通過詳解,認識遞迴(recursion)
首先先對遞迴進行入門。 遞迴是以自相似的方式重複專案的過程。在程式語言中,如果程式允許您在同一函式內呼叫函式,則稱其為函式的遞迴呼叫。 簡而言之,遞迴就是函式的自身呼叫。可以看看下面的遞迴使用: void Recursive() { Recursive();//call itself
gh0st遠控原始碼圖文詳解Gh0st通訊協議解析(1)
與大家分享下gh0st通訊的全過程解析。瞭解gh0st的通訊上線發包全過程,網上有很多相關資料,自己在總結了下。希望對初學者有幫助少走彎路,gh0st的核心是個不錯的經典值得學習。轉載請註明: 速維網路 Gh0st通訊協議解析(1) gh0st遠控原始碼釋出至今已有不少
詳解C#委託和事件(二)
一、當我們使用關鍵字delegate宣告一個自定義委託型別時,實際上是聲明瞭一個該名稱的類型別,繼承自抽象類System.MulticastDelegate,還包含例項方法Invoke、BeginInvoke、EndInvoke: public delegate void MyDelegate