0

我想枚举颜色并使用 Color 实例。因此,我创建了一个带有私有字段和 get 函数的枚举,但由于需要调用getColor().

有没有更好的方法直接使用枚举常量而不调用getColor()

public class ColorListTest {
    public enum ColorList
    {
        WHITE(new Color(255, 255, 255)),
        BLACK(new Color(255, 255, 255)),
        ;

        private Color color;
        private ColorList(Color color) { this.color = color; }
        public Color getColor() { return color; }
    }

    public static void main(String[] args)
    {
        Color color = ColorList.WHITE.getColor();
        // I'd rather have something similar to:
        // Color color = WHITE;
        // Color color = ColorList.WHITE;
    }

}

Using enums as key for map问题的答案 建议使用地图,这也需要调用 get()。

另一种选择是使用常量列表,因为不再有枚举,所以类型安全性较低:

static public class ColorList
{
    static final Color WHITE = new Color(null, 255, 255, 255);
    static final Color BLACK = new Color(null, 0, 0, 0);
}

(我发现的其他帖子似乎处理了很多字符串转换。)

那么你对一个很好用的枚举有什么建议吗?

4

2 回答 2

2

您唯一可以做的可能更好的是使用静态导入。

import static mypackage.ColourList.*;

public static void main(String[] args) {
    Color color = WHITE.getColor();
}
于 2012-10-02T08:03:34.357 回答
0

使用枚举器来定义要使用的常量。您可以在不同的类文件中定义枚举器并直接调用常量,而不是在类中定义它。

于 2012-10-02T08:04:14.933 回答