一、枚舉是什麼?
枚舉(Enum)類型是Java SE5中新增的一種特殊類型,它是一種包含固定常量的特殊類。枚舉常量在枚舉類型中以逗號分隔形式列出來,並以分號結束。枚舉常量默認是static和final的,無法修改。
二、如何定義一個枚舉?
Java中定義枚舉常量需要使用關鍵字enum,枚舉類本身也是一個常規的Java類。下面是定義一個顏色枚舉的示例代碼:
public enum Color { RED, GREEN, BLUE; }
在這個枚舉類型中,包含了3個顏色常量。這3個枚舉常量是Color類型的實例,它們分別代表了紅色、綠色和藍色。
三、枚舉可以做什麼?
1、枚舉類型的遍歷
枚舉類型可以很方便地遍歷所有枚舉常量。下面是一個遍歷Color枚舉類型的示例代碼:
for (Color c : Color.values()) { System.out.println(c); }
上述代碼將輸出RE、GREEN、BLUE,即枚舉類型中的所有枚舉常量。
2、枚舉類型的switch語句
枚舉類型可以作為switch語句的選擇器。下面是一個使用switch語句處理Color枚舉類型的示例代碼:
switch (color) { case RED: System.out.println("This is RED color"); break; case GREEN: System.out.println("This is GREEN color"); break; case BLUE: System.out.println("This is BLUE color"); break; default: System.out.println("No color match"); }
在這個示例中,switch語句選擇color變數作為選擇器進行處理。根據color變數的取值,分別輸出相應的顏色。
3、枚舉類型的實現介面
枚舉類型可以像其他Java類一樣實現介面,每個枚舉常量都是該枚舉類型的一個實例,並且具有相同的方法。下面是一個實現介面的Color枚舉類型的示例代碼:
public interface ColorInterface { void printColor(); } public enum Color implements ColorInterface { RED { public void printColor() { System.out.println("I am RED color"); } }, GREEN { public void printColor() { System.out.println("I am GREEN color"); } }, BLUE { public void printColor() { System.out.println("I am BLUE color"); } } }
上述代碼定義了一個ColorInterface介面和一個實現該介面的Color枚舉類型。每個枚舉常量都是該枚舉類型的一個實例,並且重寫了printColor方法,輸出相應的顏色。
四、枚舉的高級用法
1、枚舉可以具有自己的屬性和方法
枚舉類型可以像Java類一樣具有自己的屬性和方法。下面是一個定義自己顏色值的Color枚舉類型的示例代碼:
public enum Color { RED("#FF0000"), GREEN("#00FF00"), BLUE("#0000FF"); private String value; Color(String value) { this.value = value; } public String getValue() { return value; } }
在這個示例中,每個枚舉常量都有自己的value屬性代表顏色值,並且擁有獲取value值的方法getValue()。
2、枚舉可以根據不同屬性排序
枚舉類型可以通過實現Comparable介面進行排序。下面是一個根據枚舉常量自身屬性排序的Color枚舉類型的示例代碼:
public enum Color implements Comparable{ RED("#FF0000"), GREEN("#00FF00"), BLUE("#0000FF"); private String value; Color(String value) { this.value = value; } public String getValue() { return value; } @Override public int compareTo(Color o) { return this.value.compareTo(o.value); } }
在這個示例中,Color枚舉類型實現了Comparable介面,並且根據枚舉常量的value屬性進行排序。
3、枚舉可以進行序列化和反序列化
枚舉類型可以進行序列化和反序列化。下面是一個將Color枚舉類型序列化和反序列化的示例代碼:
public class EnumTest { public static void main(String[] args) { ObjectOutputStream oos = null; ObjectInputStream ois = null; try { oos = new ObjectOutputStream(new FileOutputStream("color.txt")); oos.writeObject(Color.RED); ois = new ObjectInputStream(new FileInputStream("color.txt")); Color color = (Color) ois.readObject(); System.out.println(color); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { oos.close(); ois.close(); } catch (IOException e) { e.printStackTrace(); } } } }
在這個示例中,Color枚舉類型被序列化到文件color.txt中,然後將該文件中的數據反序列化為Color對象,並輸出該對象。
原創文章,作者:OSZNZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325346.html