逸学java【初级菜鸟篇】9.5枚举

hi,我是逸尘,一起学java吧


枚举是信息的标志和分类

当一个变量有几种固定可能的取值时,就可以将它定义为类型的枚举。

优点:代码可读性好,入参约束严谨,代码优雅,是最好的信息分类技术!建议使用!

缺点:只能代表标识不能是数据(具体值),这个时候用常量,且常量会简单一些

修饰符 enum 枚举名称{
           第一行都是罗列枚举类实例的名称

}

enum Season{
SPRING,SUMMER,AUTUMN,WINTER; 

}

使用逗号 , 来分割

反编译的

枚举类都是继承了枚举类型:java.lang.enum
枚举都是最终类,不可以被继承。
构造器的构造器都是私有的,枚举对外不能创建对象。
枚举类的第一行默认都是罗列枚举对象的名称的。

package com.yd.yc;


import java.util.Scanner;

public class TestOne {
        public static void main(String[] args) {
            System.out.println("请输入季节"+"\n"+"SPRING"+"\n"+"SUMMER"+"\n"+"AUTUMN"+"\n"+"WINTER");
            Scanner sr =new Scanner(System.in);
            String seasons= sr.next();
            //该方法方法的作用就是返回【名称为String name的】【枚举类T中的】枚举值;
            // 该方法形参只要一个String类型的值即可,并且该String值为枚举值对应的名称,
            change(Season.valueOf(seasons));
        }

        private static void change(Season o) {
            switch (o){
                case SPRING:
                    System.out.println("春天万物复苏又是...");
                    break;
                case SUMMER:
                    System.out.println("夏天吃冰棒");
                    break;
                case AUTUMN:
                    System.out.println("秋天天高气爽");
                    break;
                case WINTER:
                    System.out.println("冬天是玩雪人");
                    break;
            }
        }
    }

枚举一般用在的场景是:状态码

enum定义的枚举类默认继承了java.lang.Enum类,并实现了java.lang.Serializable和java.lang.Comparable接口

方法

有如下的方法

  • values():返回枚举类中所有的值
  • valueOf():返回指定字符串值的枚举常量
  • name():返回实例名
  • ordinal():查找枚举常量的索引
  • equals():判断是否是同一对象,也可使用==比较
  • getDeclaringClass():返回实例所属的enum类型

特性


枚举不能继承,但可以看做一个常规的类;
不允许使用“=”为枚举常量赋值,可使用方法显示赋值;
enum可以添加普通方法、静态方法、抽象方法、构造方法;
enum可以实现接口,但无法继承,因为enum继承java.lang.Enum类,Java不允许多继承,所以 enum无法继承其他类。
 

猜你喜欢

转载自blog.csdn.net/m0_59337285/article/details/134564252