美文网首页
JavaSE学习笔记——枚举类

JavaSE学习笔记——枚举类

作者: funOfFan | 来源:发表于2020-02-14 11:59 被阅读0次
    • 如何自定义枚举类
      1. 私有化类构造器,保证不能在类外部创建对象实例。
      2. 在类的内部创建枚举类的对象实例,声明为private public staic final。
      3. 如果必要,设置类属性,属性声明为private final,也就没有set方法了,
        因为各个属性值在对象实例创建的时候,就已经被构造器赋值了。
    • enum关键字的使用
      1. 声明enum类
      enum SeasonEnum{
          SPRING("spring","春暖花开"),
          SUMMER("summer", "烈日炎炎"),
          FALL ("autumn", "秋风萧瑟"),
          WINTER("winter","冰天雪地");
          
          private final String seasonName;
          private final String seasonDesc;
          
          //此处的属性,只有get方法,没有set方法
           public String getSeasonName() {
               return seasonName;
           }
           public String getSeasonDesc() {
               return seasonDesc;
           }   
          
          private SeasonEnum(String aName, String aDesc){
              this.seasonName = aName;
              this.seasonDesc = aDesc;
          }
      
      1. values()
      //返回的是对应枚举类型的一个数组
              SeasonEnum[] seasons = SeasonEnum.values();
              for (int i = 0; i < seasons.length; i++) {
                  System.out.println(seasons[i]);
              }
      
      1. valueOf(String name)
              //valueOf传入一个形参,该形参的名称是枚举类内部对象实例的名称
              //否则报java.IllegalArgumentException异常
              String str = "WINTER";
              SeasonEnum season = SeasonEnum.valueOf(str);
              System.out.println(season);
      
    • 枚举类实现接口的两种方式
      1. 类内部各个对象实例共享同一套该接口的抽象方法的实现。
      interface info{
          void show();
      }
      //枚举类
      enum SeasonEnum implements info {
          SPRING("spring","春暖花开"),
          SUMMER("summer", "烈日炎炎"),
          FALL ("autumn", "秋风萧瑟"),
          WINTER("winter","冰天雪地");
      
          private final String seasonName;
          private final String seasonDesc;
      
          private SeasonEnum(String aName, String aDesc){
              this.seasonName = aName;
              this.seasonDesc = aDesc;
          }
      
          public String getSeasonName() {
              return seasonName;
          }
          public String getSeasonDesc() {
              return seasonDesc;
          }
      
          @Override
          public void show() {
              System.out.println("这是一个季节");
          }
      }
      //这种方式中,无论通过哪个实例调用show方法,都只会输出“这是一个季节”。
      
      1. 让类的每个对象实例,都实现接口的抽象方法,在通过对象实例调用被
        重写的抽象方法的时候,执行的效果不同。
      interface info{
          void show();
      }
      enum SeasonEnum implements info {
          SPRING("spring","春暖花开"){
              @Override
              public void show() {
                  System.out.println("春天在哪里");
              }
          },
          SUMMER("summer", "烈日炎炎"){
              @Override
              public void show() {
                  System.out.println("夏天在哪里");
              }
          },
          FALL ("autumn", "秋风萧瑟"){
              @Override
              public void show() {
                  System.out.println("秋天在哪里");
              }
          },
          WINTER("winter","冰天雪地"){
              @Override
              public void show() {
                  System.out.println("冬天在哪里");
              }
          };
      
          private final String seasonName;
          private final String seasonDesc;
      
          private SeasonEnum(String aName, String aDesc){
              this.seasonName = aName;
              this.seasonDesc = aDesc;
          }
      }
      

    相关文章

      网友评论

          本文标题:JavaSE学习笔记——枚举类

          本文链接:https://www.haomeiwen.com/subject/axedfhtx.html