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

📅  最后修改于: 2022-05-13 01:55:30.384000             🧑  作者: Mango

Java中具有自定义值的枚举

先决条件: Java中的枚举

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

例子:

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

在上面的示例中,我们可以看到 Fruits 枚举具有三个成员,即 APPLE、BANANA 和 GRAPES,它们分别具有自己不同的自定义值 RED、YELLOW 和 GREEN。

现在要在代码中使用这个枚举,我们必须遵循以下几点:-

  1. 我们必须为这个枚举类创建参数化构造函数。为什么?因为我们知道枚举类的对象不能显式创建,所以为了初始化我们使用参数化构造函数。并且构造函数不能是公共的或受保护的,它必须具有私有或默认修饰符。为什么?如果我们创建 public 或 protected,它将允许初始化多个对象。这完全违背了枚举概念。
  2. 我们必须创建一个 getter 方法来获取枚举的值。
// Java program to demonstrate how values can
// be assigned to enums.
enum TrafficSignal
{
    // This will call enum constructor with one
    // String argument
    RED("STOP"), GREEN("GO"), ORANGE("SLOW DOWN");
  
    // declaring private variable for getting values
    private String action;
  
    // getter method
    public String getAction()
    {
        return this.action;
    }
  
    // enum constructor - cannot be public or protected
    private TrafficSignal(String action)
    {
        this.action = action;
    }
}
  
// Driver code
public class EnumConstructorExample
{
    public static void main(String args[])
    {
        // let's print name of each enum and there action
        // - Enum values() examples
        TrafficSignal[] signals = TrafficSignal.values();
  
        for (TrafficSignal signal : signals)
        {
            // use getter method to get the value
            System.out.println("name : " + signal.name() +
                        " action: " + signal.getAction() );
        }
    }
}

输出:

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