我如何获得" Enum.CONSTANT"返回某种类型(例如颜色)?

时间:2015-10-11 19:03:43

标签: java enums

我希望我的枚举的字段常量返回Color color; color = ExtendedColor.RED; color = ExtendedColor.FOO; color = ExtendedColor.BAZ; 类的实例而不是某些常量值,这在Java中是否可行?我想避免通过访问器方法检索它们。例如,这是我希望能够使用我的枚举的方式:

import java.awt.*;

/**
 * Static utility enum for providing a much greater variety of Colors to choose from, some of which are not
 * included as constants in the Color class
 */
public enum ExtendedColor {
    RED(Color.RED),
    ORANGE(Color.ORANGE),
    YELLOW(Color.YELLOW),
    FOO(10, 20, 30),
    BAR(90, 90, 90),
    BAZ(30, 30, 30);

    private Color color;

    private ExtendedColor(Color color) {
        this.color = color;
    }

    private ExtendedColor(int r, int g, int b) {
        this.color = new Color(r, g, b);
    }
}
docker-machine

2 个答案:

答案 0 :(得分:2)

您可以创建一个包含公共静态字段的类,并直接访问字段ExtendedColor.COLOR1

import java.awt.*;

public class ExtendedColor {
    public static final Color COLOR1 = ...;
    public static final Color COLOR2 = ...;
    ...
}

答案 1 :(得分:2)

第一个答案给出了一种方法。另一种方法是在colorValue枚举中定义ExtendedColor方法,该方法返回实际的颜色。

public enum ExtendedColor {
  ...
  public Color colorValue() {
    return color;
  }
}

然后你会有

Color color;
color = ExtendedColor.RED.colorValue();
color = ExtendedColor.FOO.colorValue();
color = ExtendedColor.BAZ.colorValue();