Java(枚举)

发布于 2024-02-06  1098 次阅读


枚举

枚举(enum)是一种特殊的类(包括接口),用以进行信息分类。

// 若A是一个枚举类
A a = new A();//会报错

枚举对象的调用方法

A a = A.X;
//a这是即为枚举对象X
修饰符 enum 类名{
    X,Y,Z;//枚举对象的名称,以逗号分隔
    private String name;
    //getter && setter
}

枚举类提供一些额外的 api

A[] a2 = A.values();
A a3 = A.valueOf("Y");
//输出对象
System.out.println(a3.name());
//输出对象在枚举类的索引 下标从0开始
System.out.println(a3.ordinal());

抽象枚举

在枚举类中定义一个抽象方法, 枚举对象需要重写抽象方法。
构造器中如果有参数,则枚举对象中也需要有参数。

import java.sql.SQLOutput;

public enum B {
    X(){
        @Override
        public void go(){
            System.out.println("X created");
        }
    },
    Y("Mr. Y"){
        @Override
        public void go(){
            System.out.println("Y created");
            System.out.println(getName()+" is running~~");
        }
    };
    public abstract void go();

    B() {
        System.out.println("enum class B created");
    }
    B(String name){
        this.name = name;
    }
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

枚举的应用场景

用来表示一组信息,然后作为参数进行传输
选择定义一个一个的常量来展示一组信息,并作为参数传输

参数值不受约束
选择定义枚举表示一组信息,并作为参数传输

代码可读性好,参数值得到了约束,对使用者更友好,建议使用。

示例:

public class Test {
    public static void main(String[] args) {
        check(sex.BOY);
        //信息标记 分类
    }
    public static void check(sex sex_){
        switch(sex_){
            case BOY:
                System.out.println("boi");
                break;
            case GIRL:
                System.out.println("gro");
                break;
        }
    }
}

枚举 与 常量 没有相互淘汰,在实际开发中根据需求使用。