Java中具有自定义值的枚举
先决条件: Java中的枚举
默认情况下,枚举有自己的字符串值,我们也可以为枚举分配一些自定义值。考虑下面的例子。
例子:
enum Fruits
{
APPLE(“RED”), BANANA(“YELLOW”), GRAPES(“GREEN”);
}
在上面的示例中,我们可以看到 Fruits 枚举具有三个成员,即 APPLE、BANANA 和 GRAPES,它们分别具有自己不同的自定义值 RED、YELLOW 和 GREEN。
现在要在代码中使用这个枚举,我们必须遵循以下几点:-
- 我们必须为这个枚举类创建参数化构造函数。为什么?因为我们知道枚举类的对象不能显式创建,所以为了初始化我们使用参数化构造函数。并且构造函数不能是公共的或受保护的,它必须具有私有或默认修饰符。为什么?如果我们创建 public 或 protected,它将允许初始化多个对象。这完全违背了枚举概念。
- 我们必须创建一个 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