2014-11-24 48 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; 
}