枚举类

在java中,我们可能需要常量类来表示,比如星期,天气,月份。下面我们星期来做演示。

常量类

public class Weekday {
    public final static int MON = 0;
    public final static int TUS = 1;
    public final static int WED = 2;
    public final static int THU = 3;
    public final static int FRI = 4;
    public final static int SAT = 5;
    public final static int SUN = 6;
}

常量类的使用

if(Weekday.MON == 0 && Weekday.FRI == 7){}

实际上Weekday的常量值得范围是不包括的7的,但是这里依然会比较。

枚举类

定义

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

public class Main {
    public static void main(Stirng[] args){
        Weekday day = Weekday.SUN;
        if( Weekday.SUN == day ){
            System.out.println("This is sunday!");
        } else {
            System.out.println("This is Saturday!");
        }
    }
}

这里,枚举类会做强类型检查,如果比较的范围,超出类枚举值定义的返回,会报编译错误。

编译完后的class:

public static final Weekday extends enum {
    public static final Weekday MON = new Weekday();
    public static final Weekday TUS = new Weekday();
    ...
}

常用方法

name()

Weekday.MON.name(); //"MON"

ordinal():返回当前枚举值在枚举定义的排序

Weekday.MON.ordinal();// 1

values():这个方法属于字节码提升的方法

Weekday.values(); //返回所有枚举值的数组

小结

  • 枚举类比较的时候会做强类型检查,确保比较的值,在枚举定义的值范围内
  • 枚举值有定义的顺序
  • 可以通过values()获取到所有的枚举值
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。