2014-11-24 69 views
1

此代码创建一个标准Java颜色列表,然后返回它们。返回标准Java颜色的颜色类

有没有更好的方法来实现相同的结果。

public class Color_list { 
    Color[] mycolors; 

    Color_list() { 
     mycolors = new Color[] { Color.BLACK, Color.BLUE, Color.CYAN, 
       Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, 
       Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, 
       Color.WHITE, Color.YELLOW }; 
    } 

    public Color returncol(int selectedcol) { 
     return mycolors[selectedcol]; 
    } 
} 
+2

我会说使用枚举,如果你真的想拥有你的实现,但不选择平台的颜色类的具体原因是什么? – mprabhat 2014-11-24 20:14:23

+0

@MarkW'Color'不是Enum,所以你不能使用'values'。 – resueman 2014-11-24 20:16:33

+1

我没有看到这一点。您仍然需要知道哪个索引是哪种颜色,此时您可能会声明一系列int常量,您可能会在它们索引的颜色之后命名这些常量。最后,调用将看起来像'new Color_list()。returncol(Color_list.BLACK);'与'Color.BLACK'相比。 – njzk2 2014-11-24 20:19:12

回答

0

因为这些值不代表枚举,所以没有简单的方法以列表类型的方式获取它们。但是,您可以使用反射,并获取所有属于字段且名称与"^[A-Z_]+$"匹配的静态成员的列表。

或者,你可以创建自己的枚举:

public enum StandardColor { 
    BLACK(Color.BLACK) 
    // ... 
    ; 

    private StandardColor(Color color) { 
     // null checking if you want 
     this.color = color; 
    } 

    public Color getColor() { 
     return color; 
    } 

    private final Color color; 
}