列舉介紹
Java中的列舉是JDK5.0以后添加的新特性,列舉是用來定義一組數量確定的常量的類,
列舉類是一個特殊的類,它和普通類一樣可以有構造方法,也可以有屬性和普通方法,可以實作介面,
列舉的定義
public enum Color{
RED,BLACK,BLUE;
}
這就定義了一個列舉類,其中的RED,BLACK,BLUE是這個列舉類的實體,每個實體需要用‘,’隔開,最后一個使用‘;’表示結束,說它們是實體那為什么沒有用new呢?
那是因為在JDK5.0以前想要使用列舉需要自己定義,
public class Color{
public static final int RED = 1;
public static final int BLUE = 2;
public static final int BLACK = 3;
}
在JDK5.0以后,為了能夠更加方便的使用列舉,就出現了enum關鍵字,定義了列舉類之后,就把之前全部重復的代碼給省去了,比如public static final int
所以才有了上面這樣簡單的定義,
列舉的使用
在定義了列舉類之后,直接使用類名加屬性就可以呼叫,因為所有都是static的,
public class EnumTest {
public static void main(String[] args) {
Color black = Color.BLACK;
}
}
在switch中使用
public class EnumTest {
public static void main(String[] args) {
Color red = Color.RED;
switch (red){
case RED:
System.out.println("紅色");
break;
case BLUE:
System.out.println("藍色");
break;
case BLACK:
System.out.println("黑色");
break;
}
}
}
在switch中使用時,不需要加類名,直接使用物件就行了,
列舉類的原理
列舉類實際上是繼承了Enum類,
Enum中常用的方法:
| 回傳型別 | 方法名 | 說明 |
|---|---|---|
| String | toStirng() | 回傳列舉類的名稱 |
| 列舉型別[] | values() | 回傳回傳所有列舉常量 |
| 列舉型別 | valuesOf(String name) | 根據名稱回傳列舉常量 |
列舉類實作介面
列舉類實作了介面之后,需要實作對應的抽象方法,有兩種實作方式,會有不一樣的結果,
第一種:在列舉類中實作
public class EnumTest {
public static void main(String[] args) {
Color.RED.show();
Color.BLUE.show();
Color.BLACK.show();
}
}
interface Show{
void show();
}
enum Color implements Show {
RED,
BLUE,
BLACK;
@Override
public void show() {
System.out.println("列舉了紅色");
}
}
/*
運行結果:
列舉了紅色
列舉了紅色
列舉了紅色
*/
如果我想要每個顏色列印不一樣的資料,這種實作方式就不行了,需要第二種實作方式,
在每個常量后面實作方法:
enum Color implements Show {
RED{
@Override
public void show() {
System.out.println("列舉了紅色");
}
},
BLUE{
@Override
public void show() {
System.out.println("列舉了藍色");
}
},
BLACK{
@Override
public void show() {
System.out.println("列舉了黑色");
}
};
}
/*
運行結果:
列舉了紅色
列舉了藍色
列舉了黑色
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/192477.html
標籤:Java
