列舉
1、列舉簡介
列舉,是java中的一種比較特殊的class,它繼承了java.lang.Enum類,也就是說在列舉類中是不能夠繼承其他類的,列舉型別可以取代以往常量的定義方式,即將常量封裝在類或介面中,此外,列舉型別還提供了安全檢查功能,列舉型別本質上還是以類的形式存在
以往設定常量,通常將常量放置在介面中,這樣在程式中就可以直接使用了,并且該常量不能被修改,因為在介面中定義的常量時,該常量的修飾符為final與static,
public interface Color
{
public static final int RED = 1;
public static final int GREEN = 2;
public static final int BLUE = 3;
}
使用列舉定義常量的語法如下:
public enum ColorEnum
{
RED,
GREEN,
BLUE,
}
常量宣告 會有一些問題,比如
-
型別不安全,比如在一個方法中要求傳入形參,用常量的話,形參就是int型別,開發者傳入任意型別的int型別值就可以,但是如果是列舉型別的話,那就只能傳入列舉類中包含的物件,
-
沒有命名空間,開發者要在命名的時候以一定的格式來確定這個常量的使用范圍,比如是四季的話就是SPRING表示春天,這樣另外一個開發者再看這段代碼的時候才知道這四個常量分別代表季節,
命名規范:
final常量:使用大寫字母命名,并且中間使用下劃線進行連接,
enum列舉:使用大寫字母命名,并且中間使用下劃線進行連接,
public static void doit(ColorEnum c)
{
switch (c)
{
case RED:
System.out.println("This is RED");
break;
case BLUE:
System.out.println("This is GREEN");
break;
case GREEN:
System.out.println("This is BLUE");
break;
default:
break;
}
}
public static void main(String[] args)
{
doit(ColorEnum.RED);
}
2 、操作列舉型別成員的方法
| 方法名稱 | 具體含義 | 使用方法 |
|---|---|---|
| values() | 該方法可以將列舉型別成員以陣列的形式回傳 | 列舉型別名稱.values() |
| valueOf() | 該方法可以實作將普通字串轉換為列舉實體 | 列舉型別名稱.valueOf("ABC") |
| compareTo() | 該方法用于比較兩個列舉物件在定義時的順序 | 列舉物件.compareTo() |
| ordinal() | 該方法用于得到列舉成員的位置索引 | 列舉物件.ordinal() |
(1)values()方法
該方法可以將列舉型別成員以陣列的形式回傳,也可以通過該方法獲取列舉型別的成員,
/**
* @Author IBing
* @Date 2022/8/5 21:17
* @Version 1.0
*/
public class showEnum {
enum ColorEnum{
RED,
BLUE,
GREEN,
YELLOW
}
public static void main(String[] args) {
System.out.println("列舉成員有:"+Arrays.toString(ColorEnum.values()));
System.out.println("=================================");
for (ColorEnum c: ColorEnum.values()) {
System.out.println("列舉成員:"+c);
}
}
}
執行結果:

(2)valueOf()與compareTo()方法
/**
* 列舉中valueOf()與compareTo()方法的使用
* @author pan_junbiao
*/
public class EnumMethodTest
{
enum ColorEnum
{
RED, BLUE, GREEN
}
// 定義比較列舉型別方法,引數型別為列舉型別
public static void compare(ColorEnum c)
{
// 根據values()方法回傳的陣列做回圈操作
for (int i = 0; i < ColorEnum.values().length; i++)
{
// 將比較結果回傳
System.out.println(c + "與" + ColorEnum.values()[i] + "的比較結果為:" + c.compareTo(ColorEnum.values()[i]));
}
}
public static void main(String[] args)
{
// 使用valueOf()將字串轉換為列舉實體
ColorEnum c = ColorEnum.valueOf("BLUE");
compare(c);
}
}
執行結果:

說明:呼叫compareTo()方法回傳的結果,正值代表方法中的引數在呼叫該方法的列舉物件位置之前;0代表兩個相互比較的列舉成員的位置相同;負值代表方法中引數在呼叫該方法的列舉物件位置之后,
(3)ordinal()方法
該方法用于得到列舉成員的位置索引,
public class showEnum {
enum ColorEnum{
RED,
BLUE,
GREEN,
YELLOW
}
public static void main(String[] args) {
for (ColorEnum c: ColorEnum.values()) {
System.out.println("列舉成員 "+ c+" 的位置索引為:"+c.ordinal());
}
}
執行結果:

3、使用列舉型別的優勢
列舉型別宣告提供了一種用戶友好的變數定義方法,列舉了某種資料型別所有可能出現的值,總結列舉型別,它具有以下特點:
(1)型別安全,
(2)緊湊有效的資料定義,
(3)可以和程式其他部分完美互動,
(4)運行效率高
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/502697.html
標籤:Java
