当前位置 > it书童 > java > 正文

java 枚举类入门

java it书童 2020-11-29 13:36:08 0赞 0踩 347阅读 0评论

实例有限而且固定的类,在Java里被称为枚举类

Java 5新增了一个enum关键字(它与class、interface关键字的地位相同),用以定义枚举类

枚举类是一种特殊的类,它一样可以有自己的成员变量、方法,可以实现一个或者多个接口,也可以定义自己的构造器

枚举类与普通类的区别:

  • 枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是默认继承Object类

  • 使用enum定义、非抽象的枚举类默认会使用final修饰

  • 枚举类的构造器只能使用private访问控制符,如果省略了构造器的访问控制符,则默认使用private修饰。枚举类的所有构造器都是private的,而子类构造器总要调用父类构造器一次,因此枚举类不能派生子类

  • 枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远都不能产生实例。列出这些实例时,系统会自动添加public static final修饰

定义枚举类

public enum SeasonEnum {
    // 第一行列出所有枚举实例
    SPRING, SUMMER, FALL, WINTER;
}

如果需要使用该枚举类的某个实例,则可使用EnumClass.variable的形式

public class EnumTest {
    public void judge(SeasonEnum s) {
        switch (s) {
            case SPRING:
                System.out.println("春暖花开");
                break;
            case SUMMER:
                System.out.println("夏日炎炎");
                break;
            case FALL:
                System.out.println("秋高气爽");
                break;
            case WINTER:
                System.out.println("冬日雪飘");
                break;
        }
    }

    public static void main(String[] args) {
        // 枚举类默认有一个 values() 方法,返回该枚举类的所有实例
        for (SeasonEnum s : SeasonEnum.values()) {
            System.out.println(s);
        }
        new EnumTest().judge(SeasonEnum.SPRING);
    }
}

源码 javaDemo 52c6c57

关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/912