Java基础之枚举

在工作中,慢慢发现用到枚举的地方很多,之前也没太注意这块,现在好好整理一下枚举的知识。

什么是枚举类?

定义:类的对象只有有限个,确定的。比如:

  • 星期:Monday(星期一)、......、Sunday(星期天)
  • 性别:Man(男)、Woman(女)
  • 季节:Spring(春节)......Winter(冬天)

如何使用枚举?

enum Season implements Info{
    //1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束
    SPRING("spring","春天"),
    SUMMER,
    AUTUMN,
    WINTER;

    private String season;
    private String desc;
    //无参构造
    Season() {
    }
    //有参构造
    Season(String season, String desc) {
        this.season = season;
        this.desc = desc;
    }
    //实现接口的方法
    @Override
    public void show() {
        System.out.println(SPRING);
    }
}

在这份代码中,其中的

SPRING("spring","春天"),
    SUMMER,
    AUTUMN,
    WINTER

都是enum的对象。这是非常重要的一点。其中枚举类型还可以有自己的属性,还可以实现接口。如下

接口类

interface Info{
    void show();
}

测试类:

/**
 * 使用enum关键字定义枚举类
 * 说明:定义的枚举类默认继承于java.lang.Enum类
 *
 * @author ssl
 * @create 2020
 */
public class enumTest {
    public static void main(String[] args) {
        Season spring = Season.SPRING;
        //toString():返回枚举类对象的名称
        System.out.println(spring.toString());

        System.out.println("****************");
        //values():返回所有的枚举类对象构成的数组
        Season[] values = Season.values();
        for(int i = 0;i < values.length;i++){
            System.out.println(values[i]);
            values[i].show();
        }
        System.out.println("****************");
        Thread.State[] values1 = Thread.State.values();
        for (int i = 0; i < values1.length; i++) {
            System.out.println(values1[i]);
        }

        //valueOf(String objName):返回枚举类中对象名是objName的对象。
        Season winter = Season.valueOf("WINTER");
        //如果没有objName的枚举类对象,则抛异常:IllegalArgumentException
//        Season1 winter = Season1.valueOf("WINTER1");
        System.out.println(winter);
        winter.show();
    }
}

 

你可能感兴趣的:(JAVA)