• 【Day26】枚举


    目录

    1、枚举解释定义

    2、enum枚举关键字


    1、枚举解释定义

    /**一:枚举
     * 1、枚举类的对象是有限多个,确定的
     * 2、当需要定义一组常量时,强烈建议使用枚举类
     * 3、如果枚举类中只有一个对象,则可以作为单例模式的实现方式
     *
     * 二:如何定义枚举类:
     * 方式一:jdk1.5之前,自定义枚举类
     * 方式二:jdk1.5之后,可以使用enum关键字定义枚举类
     *
     * 三:Enum类中的常用方法:
     *  values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的 枚举值。
     *  valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:
     * IllegalArgumentException。
     *
     * 四:使用enum关键字
     *  toString():返回当前枚举类对象常量的名称
     *
     * @description:
     * @author ----千里之行,始于足下----
     * @date 2022/8/17 10:32
     */
    1. public class SeasonTest {
    2. @Test
    3. public void test1(){
    4. //直接获取指定的数据
    5. Season season=Season.AUTUMN;
    6. System.out.println(season);
    7. Season season1=Season.SPRING;
    8. System.out.println(season1);
    9. }
    10. }
    11. //自定义枚举类
    12. class Season{
    13. //声明Season对象的属性
    14. private final String seasonName;
    15. private final String seasonDesc;
    16. //私有化类的构造器
    17. private Season(String seasonName,String seasonDesc){
    18. this.seasonName=seasonName;
    19. this.seasonDesc=seasonDesc;
    20. }
    21. //3、提供当前枚举类的多个对象
    22. public static final Season SPRING=new Season("春天","春暖花开");
    23. public static final Season SUMMER=new Season("夏天","炎炎夏日");
    24. public static final Season AUTUMN=new Season("秋天","果实累累");
    25. public static final Season WINTER=new Season("冬天","冷风飕飕");
    26. //4、其它诉求1:获取枚举类对象的属性
    27. public String getSeasonName(){
    28. return seasonName;
    29. }
    30. public String getSeasonDesc(){
    31. return seasonDesc;
    32. }
    33. //5、其它诉求:提供toString方法()
    34. @Override
    35. public String toString() {
    36. return "Season{" +
    37. "seasonName='" + seasonName + '\'' +
    38. ", seasonDesc='" + seasonDesc + '\'' +
    39. '}';
    40. }

    2、enum枚举关键字

    /**
     * 使用enum关键字定义枚举类
     * 说明:定义的枚举类默认继承java.lang.Enum类
     *
     */
    1. public class SeasonTest1 {
    2. public static void main(String[] args) {
    3. Season season=Season.AUTUMN;
    4. System.out.println(season);
    5. //values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的 枚举值。
    6. Season1[] value = Season1.values();
    7. for(int i=0;i
    8. System.out.println(value[i]);
    9. value[i].show();
    10. }
    11. //返回线程当前的状态
    12. Thread.State[] value1=Thread.State.values();
    13. for (int i = 0; i < value.length; i++) {
    14. System.out.println(value1[i]);
    15. }
    16. //valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:
    17. //IllegalArgumentException。
    18. //根据提供对象名,返回枚举类中相对应的详细信息,否侧报错
    19. Season1 winter=Season1.valueOf("WINTER");
    20. System.out.println(winter);
    21. //返回对象信息
    22. System.out.println(season.toString());
    23. }
    24. }
    25. enum Season1 implements Info{
    26. //3、提供当前枚举类的多个对象
    27. //提供多个对象,多个对象之间有“,”隔开,末尾用“;”结束
    28. SPRING("春天","春暖花开"){
    29. // 每一个对象都重写show方法,可以是,调用不同的对象,显示不同的方法
    30. @Override
    31. public void show() {
    32. System.out.println("这是一个春天");
    33. }
    34. },
    35. SUMMER("夏天","炎炎夏日"){
    36. @Override
    37. public void show() {
    38. System.out.println("这是一个夏天");
    39. }
    40. },
    41. AUTUMN("秋天","果实累累"){
    42. @Override
    43. public void show() {
    44. System.out.println("这是一个秋天");
    45. }
    46. },
    47. WINTER("冬天","冷风飕飕"){
    48. @Override
    49. public void show() {
    50. System.out.println("这是一个冬天");
    51. }
    52. };
    53. //声明Season对象的属性
    54. private final String seasonName;
    55. private final String seasonDesc;
    56. //私有化类的构造器
    57. private Season1(String seasonName,String seasonDesc){
    58. this.seasonName=seasonName;
    59. this.seasonDesc=seasonDesc;
    60. }
    61. //4、其它诉求1:获取枚举类对象的属性
    62. public String getSeasonName(){
    63. return seasonName;
    64. }
    65. public String getSeasonDesc(){
    66. return seasonDesc;
    67. }
    68. //5、其它诉求:提供toString方法()
    69. @Override
    70. public String toString() {
    71. return "Season{" +
    72. "seasonName='" + seasonName + '\'' +
    73. ", seasonDesc='" + seasonDesc + '\'' +
    74. '}';
    75. }
    76. // @Override
    77. // public void show() {
    78. // System.out.println("这是一个季节");
    79. // }
    80. }
    81. interface Info{
    82. void show();
    83. }

     若有错误请指教

  • 相关阅读:
    Java SE 9 多版本兼容 JAR 包示例
    【NSArray和NSDictionary的内存管理 Objective-C语言】
    协同过滤算法
    家政小程序开发制作,家政保洁上门维修小程序搭建
    8.城市交通
    【数据结构】堆的应用+TOP-K问题+二叉树遍历
    redis集群某主节点宕机,其从节点未自动接管(故障转移未生效)问题解决
    作用域 CSS 回来了
    【C#语言】WinForm窗体
    90. 子集 II
  • 原文地址:https://blog.csdn.net/fool_Java/article/details/126897034