📜  Java中具有自定义值的枚举

📅  最后修改于: 2020-02-12 14:43:24             🧑  作者: Mango

先决条件:Java枚举
默认情况下,枚举有自己的字符串值,我们也可以为枚举分配一些自定义值。考虑下面的例子。
例子:

enum  Fruits
{
    APPLE(“RED"), BANANA(“YELLOW"), GRAPES(“GREEN");
}

在上面的示例中,我们可以看到Fruits枚举具有三个成员,即APPLE,BANANA和GRAPES,它们分别具有各自不同的自定义值RED,YELLOW和GREEN。
现在要在代码中使用此枚举,必须注意以下几点:

  1. 我们必须为此枚举类创建参数化的构造函数。为什么?因为我们知道不能显式创建枚举类的对象,所以为了进行初始化,我们使用了参数化构造函数。并且构造函数不能是public公共的或受保护的protected,它必须具有私有或默认修饰符。为什么?如果我们创建public或protected,它将允许初始化多个对象。这完全违反枚举概念。
  2. 我们必须创建一个getter方法来获取枚举的值。
    // Java 代码,展示值如何可以被赋予enums.
    enum TrafficSignal
    {
        // 调用枚举构造器
        RED("STOP"), GREEN("GO"), ORANGE("SLOW DOWN");
        // 声明私有变量
        private String action;
        // getter方法
        public String getAction()
        {
            return this.action;
        }
        // enum 构造函数,不能是public或者protected
        private TrafficSignal(String action)
        {
            this.action = action;
        }
    }
    // 测试代码
    public class EnumConstructorExample
    {
        public static void main(String args[])
        {
            // 打印每个enum
            TrafficSignal[] signals = TrafficSignal.values();
            for (TrafficSignal signal : signals)
            {
                // 使用getter方法获取值
                System.out.println("name : " + signal.name() +
                            " action: " + signal.getAction() );
            }
        }
    }

    输出:

    name : RED action: STOP
    name : GREEN action: GO
    name : ORANGE action: SLOW DOWN