java - 如何让 "Enum.CONSTANT"返回某种类型(例如颜色)?

标签 java enums

我希望枚举的字段常量返回 Color 类的实例而不是一些常量值,这在 Java 中可能吗?我想避免通过访问器方法检索它们。例如,这是我希望能够使用枚举的方式:

Color color;
color = ExtendedColor.RED;
color = ExtendedColor.FOO;
color = ExtendedColor.BAZ;

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);
    }
}

最佳答案

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

import java.awt.*;

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

关于java - 如何让 "Enum.CONSTANT"返回某种类型(例如颜色)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068955/

相关文章:

c++ - 我怎样才能部分特化所有枚举的类模板?

java - libgdx touchup 和 touchdragged 没有被调用,但是 touchdown 是

java - 在java方法中执行并行任务

c++ - 使用枚举类的 undefined symbol

c++ - 将指向类型/大小枚举的指针转换为指向基础类型的指针是否安全?

c# - 使用反射和枚举来进行 MVC 应用程序访问的逻辑控制是否安全?

Java 序列打印

java - Spring访问 keystore 文件

java - 使用 ireport 生成 Excel 文件的密码保护

enums - 如何为枚举实现 Borrow、ToOwned 或 Deref?