如何在java中直接使用枚举常量

时间:2012-10-02 08:00:43

标签: java enums

我想枚举颜色并使用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()。

另一种选择是使用常量列表,因为没有常量列表,因此类型安全性较低 enum:

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

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

那么你有一个很好用的枚举推荐吗?

2 个答案:

答案 0 :(得分:2)

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

import static mypackage.ColourList.*;

public static void main(String[] args) {
    Color color = WHITE.getColor();
}

答案 1 :(得分:0)

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