一、枚舉是什麼?
枚舉(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
微信掃一掃
支付寶掃一掃