乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Java枚舉的使用

       沙門空海 2020-03-15

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

      1、使用枚舉類型設(shè)置常量

      以往設(shè)置常量,通常將常量放置在接口中,這樣在程序中就可以直接使用了,并且該常量不能被修改,因為在接口中定義的常量時,該常量的修飾符為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常量:使用大寫字母命名,并且中間使用下劃線進(jìn)行連接。

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

      示例:枚舉類型的使用。

      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)定義常量的方式,除了具有參數(shù)類型檢測的優(yōu)勢之外,還具有其他方面的優(yōu)勢。

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

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

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

      枚舉類型的常用方法:

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

      (1)values()方法

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

      示例:使用枚舉類型中的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()方法返回的數(shù)組
      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í)行結(jié)果:

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

      枚舉類型中靜態(tài)方法valueOf()可以實現(xiàn)將普通字符串轉(zhuǎn)換為枚舉實例,而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. // 定義比較枚舉類型方法,參數(shù)類型為枚舉類型
      14. public static void compare(ColorEnum c)
      15. {
      16. // 根據(jù)values()方法返回的數(shù)組做循環(huán)操作
      17. for (int i = 0; i < ColorEnum.values().length; i++)
      18. {
      19. // 將比較結(jié)果返回
      20. System.out.println(c + "與" + ColorEnum.values()[i] + "的比較結(jié)果為:" + c.compareTo(ColorEnum.values()[i]));
      21. }
      22. }
      23. public static void main(String[] args)
      24. {
      25. // 使用valueOf()將字符串轉(zhuǎn)換為枚舉實例
      26. ColorEnum c = ColorEnum.valueOf("BLUE");
      27. compare(c);
      28. }
      29. }

      執(zhí)行結(jié)果:

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

      (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í)行結(jié)果:

      2.2 枚舉類型中的構(gòu)造方法

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

      示例:在枚舉類型中,可以添加構(gòu)造方法。

      1. /**
      2. * 在枚舉類型中添加構(gòu)造方法
      3. *
      4. * @author pan_junbiao
      5. *
      6. */
      7. public class EnumIndexTest
      8. {
      9. enum ColorEnum
      10. {
      11. RED(1, "我是紅色"), BLUE(2, "我是藍(lán)色"), 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("值轉(zhuǎn)換成枚舉:" + ColorEnum.valueOf(2));
      49. System.out.println("字符串轉(zhuǎn)換成枚舉:" + ColorEnum.valueOf("GREEN"));
      50. }
      51. }

      執(zhí)行結(jié)果:

      2.3 枚舉中實現(xiàn)接口

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

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

      1. interface d
      2. {
      3. public int getValue();
      4. public String getDescription();
      5. }
      6. /**
      7. * 枚舉中實現(xiàn)接口
      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 "我是藍(lán)色";
      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í)行結(jié)果:

       

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

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

      (1)類型安全。

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

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

      (4)運行效率高。

       

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多