• Java-枚举类


    Java-枚举类

    枚举类内可以直接写出所有实例。

    enum Weekday {
       SUN, MON, TUE, WED, THU, FRI, SAT;
    }

    不可能引用非枚举的值。

    enum类型的每个常量在JVM中只有一个唯一实例,可以直接用==比较:

    if (day == Weekday.FRI) { // ok!
    }
    if (day.equals(Weekday.SUN)) { // ok, but more code!
    }

    和一般的class有什么区别?

    • 总是继承自java.lang.Enum,且无法被继承

    • 无法通过new创建enum的实例

    • 定义的每个实例都是引用类型的唯一实例

    • 可以将enum类型用于switch语句

    public enum Color {
       RED, GREEN, BLUE;
    }

    编译器编译出的class文件:

    public final class Color extends Enum { // 继承自Enum,标记为final class
       // 每个实例均为全局唯一:
       public static final Color RED = new Color();
       public static final Color GREEN = new Color();
       public static final Color BLUE = new Color();
       // private构造方法,确保外部无法调用new操作符:
       private Color() {}
    }

    方法

    方法描述
    name() 返回常量名
    ordina() 返回定义的常量的顺序

    可以为enum编写构造方法、字段和方法

    字段强烈建议声明为final

    enum Weekday {
       MON(1, "星期一"), TUE(2, "星期二"), WED(3, "星期三"), THU(4, "星期四"), FRI(5, "星期五"), SAT(6, "星期六"), SUN(0, "星期日");

       public final int dayValue;
       private final String chinese;

       private Weekday(int dayValue, String chinese) {
           this.dayValue = dayValue;
           this.chinese = chinese;
      }
       public String getChiese(){
           return this.chinese;
      }

       @Override
       public String toString() {
           return this.chinese;
      }
    }

    Switch

    因为枚举类天生具有类型信息和有限个枚举常量,所以比intString类型更适合用在switch语句中:

    public class Main {
       public static void main(String[] args) {
           Weekday day = Weekday.SUN;
           switch(day) {
           case MON:
           case TUE:
           case WED:
           case THU:
           case FRI:
               System.out.println("Today is " + day + ". Work at office!");
               break;
           case SAT:
           case SUN:
               System.out.println("Today is " + day + ". Work at home!");
               break;
           default:
               throw new RuntimeException("cannot process " + day);
          }
      }
    }

    enum Weekday {
       MON, TUE, WED, THU, FRI, SAT, SUN;
    }

     

     

  • 相关阅读:
    No.5 Verilog 建模方式
    No.1 Verilog HDL简介
    [好文推荐]能大大提升工作效率和时间效率的9个重要习惯
    org.apache.commons.net.ftp.FTPClient上传文件大小改变的解决方法
    利用myeclipse建立webservice服务端和客户端
    FtpClient.storeFile返回false解决方法
    jquery表单formSerialize方法乱码问题解决
    Apache FTPClient下载地址
    Myeclipse发生java heap space错误
    UtraEdit的下载地址,无需注册码的
  • 原文地址:https://www.cnblogs.com/biwangwang/p/14263147.html
Copyright © 2020-2023  润新知