2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

Java枚舉的使用

 沙門空海 2020-03-15

枚舉類型可以取代以往常量的定義方式,即將常量封裝在類或接口中。此外,枚舉類型還提供了安全檢查功能。枚舉類型本質上還是以類的形式存在。

1、使用枚舉類型設置常量

以往設置常量,通常將常量放置在接口中,這樣在程序中就可以直接使用了,并且該常量不能被修改,因為在接口中定義的常量時,該常量的修飾符為final與static。

  1. public interface Constants
  2. {
  3. public static final int RED = 1;
  4. public static final int BLUE = 2;
  5. public static final int GREEN = 3;
  6. }

使用枚舉定義常量的語法如下:

  1. public enum ColorEnum
  2. {
  3. RED,
  4. BLUE,
  5. GREEN
  6. }

命名規(guī)范:

final常量:使用大寫字母命名,并且中間使用下劃線進行連接。

enum枚舉:使用大寫字母命名,并且中間使用下劃線進行連接。

示例:枚舉類型的使用。

  1. public static void doit(ColorEnum c)
  2. {
  3. switch (c)
  4. {
  5. case RED:
  6. System.out.println("This is RED");
  7. break;
  8. case BLUE:
  9. System.out.println("This is BLUE");
  10. break;
  11. case GREEN:
  12. System.out.println("This is GREEN");
  13. break;
  14. default:
  15. break;
  16. }
  17. }
  18. public static void main(String[] args)
  19. {
  20. doit(ColorEnum.RED);
  21. }

 

2、深入了解枚舉類型

枚舉類型較傳統(tǒng)定義常量的方式,除了具有參數類型檢測的優(yōu)勢之外,還具有其他方面的優(yōu)勢。

2.1 操作枚舉類型成員的方法

用戶可以將一個枚舉類型看作是一個類,它繼承于java.lang.Enum類,當定義一個枚舉類型時,每一個枚舉類型成員都可以看作是枚舉類型的一個實例,這些枚舉類型成員默認都被final、public、static所修飾,所以當使用枚舉類型成員時直接使用枚舉類型名稱調用枚舉類型成員即可。

由于枚舉類型對象繼承與java.lang.Enum類,所以該類中一些操作枚舉類型的方法都可以應用到枚舉型中。

枚舉類型的常用方法:

方法名稱 具體含義 使用方法
values() 該方法可以將枚舉類型成員以數組的形式返回 枚舉類型名稱.values()
valueOf() 該方法可以實現將普通字符串轉換為枚舉實例 枚舉類型名稱.valueOf("ABC")
compareTo() 該方法用于比較兩個枚舉對象在定義時的順序 枚舉對象.compareTo()
ordinal() 該方法用于得到枚舉成員的位置索引 枚舉對象.ordinal()

(1)values()方法

該方法可以將枚舉類型成員以數組的形式返回,也可以通過該方法獲取枚舉類型的成員。

示例:使用枚舉類型中的values()方法獲取枚舉類型中的成員變量。

  1. /**
  2. * 使用枚舉類型中的values()方法獲取枚舉類型中的成員變量
  3. *
  4. * @author pan_junbiao
  5. *
  6. */
  7. public class ShowEnum
  8. {
  9. enum ColorEnum
  10. {
  11. RED, BLUE, GREEN
  12. }
  13. // 循環(huán)由values()方法返回的數組
  14. public static void main(String[] args)
  15. {
  16. System.out.println("方式一:");
  17. for (int i = 0; i < ColorEnum.values().length; i++)
  18. {
  19. // 將枚舉成員變量打印
  20. System.out.println("枚舉類型成員變量:" + ColorEnum.values()[i]);
  21. }
  22. System.out.println("方式二:");
  23. for (ColorEnum c : ColorEnum.values())
  24. {
  25. // 將枚舉成員變量打印
  26. System.out.println("枚舉類型成員變量:" + c);
  27. }
  28. }
  29. }

執(zhí)行結果:

(2)valueOf()與compareTo()方法

枚舉類型中靜態(tài)方法valueOf()可以實現將普通字符串轉換為枚舉實例,而compareTo()方法用于比較兩個枚舉對象在定義時的順序。

示例:枚舉中valueOf()與compareTo()方法的使用。

  1. /**
  2. * 枚舉中valueOf()與compareTo()方法的使用
  3. *
  4. * @author pan_junbiao
  5. *
  6. */
  7. public class EnumMethodTest
  8. {
  9. enum ColorEnum
  10. {
  11. RED, BLUE, GREEN
  12. }
  13. // 定義比較枚舉類型方法,參數類型為枚舉類型
  14. public static void compare(ColorEnum c)
  15. {
  16. // 根據values()方法返回的數組做循環(huán)操作
  17. for (int i = 0; i < ColorEnum.values().length; i++)
  18. {
  19. // 將比較結果返回
  20. System.out.println(c + "與" + ColorEnum.values()[i] + "的比較結果為:" + c.compareTo(ColorEnum.values()[i]));
  21. }
  22. }
  23. public static void main(String[] args)
  24. {
  25. // 使用valueOf()將字符串轉換為枚舉實例
  26. ColorEnum c = ColorEnum.valueOf("BLUE");
  27. compare(c);
  28. }
  29. }

執(zhí)行結果:

說明:調用compareTo()方法返回的結果,正值代表方法中的參數在調用該方法的枚舉對象位置之前;0代表兩個相互比較的枚舉成員的位置相同;負值代表方法中參數在調用該方法的枚舉對象位置之后。

(3)ordinal()方法

該方法用于得到枚舉成員的位置索引。

示例:枚舉中ordinal()方法的使用。

  1. /**
  2. * 枚舉中ordinal()方法的使用
  3. *
  4. * @author pan_junbiao
  5. *
  6. */
  7. public class EnumOrdinalTest
  8. {
  9. public enum ColorEnum
  10. {
  11. RED, BLUE, GREEN
  12. }
  13. public static void main(String[] args)
  14. {
  15. for (int i = 0; i < ColorEnum.values().length; i++)
  16. {
  17. // 在循環(huán)中獲取枚舉類型成員的索引位置
  18. System.out.println(ColorEnum.values()[i] + "在枚舉類型中位置索引值" + ColorEnum.values()[i].ordinal());
  19. }
  20. }
  21. }

執(zhí)行結果:

2.2 枚舉類型中的構造方法

在枚舉類型中,可以添加構造方法,但是規(guī)定這個構造方法必須為private修飾符修飾。

示例:在枚舉類型中,可以添加構造方法。

  1. /**
  2. * 在枚舉類型中添加構造方法
  3. *
  4. * @author pan_junbiao
  5. *
  6. */
  7. public class EnumIndexTest
  8. {
  9. enum ColorEnum
  10. {
  11. RED(1, "我是紅色"), BLUE(2, "我是藍色"), GREEN(3, "我是綠色");
  12. private final int value;
  13. private final String description;
  14. private ColorEnum(int value, String description)
  15. {
  16. this.value = value;
  17. this.description = description;
  18. }
  19. public int getValue()
  20. {
  21. return this.value;
  22. }
  23. public String getDescription()
  24. {
  25. return this.description;
  26. }
  27. public static ColorEnum valueOf(int value)
  28. {
  29. switch (value)
  30. {
  31. case 1:
  32. return ColorEnum.RED;
  33. case 2:
  34. return ColorEnum.BLUE;
  35. case 3:
  36. return ColorEnum.GREEN;
  37. default:
  38. return null;
  39. }
  40. }
  41. }
  42. public static void main(String[] args)
  43. {
  44. for (ColorEnum c : ColorEnum.values())
  45. {
  46. System.out.println("枚舉成員:" + c + " 值:" + c.getValue() + " 描述:" + c.getDescription());
  47. }
  48. System.out.println("值轉換成枚舉:" + ColorEnum.valueOf(2));
  49. System.out.println("字符串轉換成枚舉:" + ColorEnum.valueOf("GREEN"));
  50. }
  51. }

執(zhí)行結果:

2.3 枚舉中實現接口

除了可以使用上述示例的方法定義getDescription()方法獲取枚舉類型成員變量是的描述之外,還可以將這個getDescription()方法放置在接口中,使枚舉類型實現接口,然后使每個枚舉類型實現接口中的方法。

示例:在項目中創(chuàng)建d接口和枚舉類型的AnyEnum類,在枚舉類型AnyEnum類中實現帶方法的接口,使每個枚舉類型成員實現該接口中的方法。

  1. interface d
  2. {
  3. public int getValue();
  4. public String getDescription();
  5. }
  6. /**
  7. * 枚舉中實現接口
  8. *
  9. * @author pan_junbiao
  10. *
  11. */
  12. public enum AnyEnum implements d
  13. {
  14. RED
  15. {
  16. public int getValue()
  17. {
  18. return 1;
  19. }
  20. public String getDescription()
  21. {
  22. return "我是紅色";
  23. }
  24. },
  25. BLUE
  26. {
  27. public int getValue()
  28. {
  29. return 2;
  30. }
  31. public String getDescription()
  32. {
  33. return "我是藍色";
  34. }
  35. },
  36. GREEN
  37. {
  38. public int getValue()
  39. {
  40. return 3;
  41. }
  42. public String getDescription()
  43. {
  44. return "我是綠色";
  45. }
  46. };
  47. public static void main(String[] args)
  48. {
  49. for (AnyEnum c : AnyEnum.values())
  50. {
  51. System.out.println("枚舉成員:" + c + " 值:" + c.getValue() + " 描述:" + c.getDescription());
  52. }
  53. }
  54. }

執(zhí)行結果:

 

3、使用枚舉類型的優(yōu)勢

枚舉類型聲明提供了一種用戶友好的變量定義方法,枚舉了某種數據類型所有可能出現的值??偨Y枚舉類型,它具有以下特點:

(1)類型安全。

(2)緊湊有效的數據定義。

(3)可以和程序其他部分完美交互。

(4)運行效率高。

 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多