Java 用于存储RGB字符串的枚举
我以前从未使用过枚举,所以我发现它们非常混乱!我想存储很多RGB值(作为字符串),我认为枚举是最好的选择,而不是列出静态最终字符串的类?我正在试验代码,这是我到目前为止得到的,这是正确的吗?(似乎还可以)Java 用于存储RGB字符串的枚举,java,enums,Java,Enums,我以前从未使用过枚举,所以我发现它们非常混乱!我想存储很多RGB值(作为字符串),我认为枚举是最好的选择,而不是列出静态最终字符串的类?我正在试验代码,这是我到目前为止得到的,这是正确的吗?(似乎还可以) 代码看起来不错,但最好将RGB值保留为数字(因为它们确实是数字)。您可以像这样重新编写代码: public enum Colors { GREY(142, 142, 147), RED(255, 59, 48), GREEN(76, 217, 100), PURPLE(88, 86, 214)
代码看起来不错,但最好将RGB值保留为数字(因为它们确实是数字)。您可以像这样重新编写代码:
public enum Colors {
GREY(142, 142, 147),
RED(255, 59, 48),
GREEN(76, 217, 100),
PURPLE(88, 86, 214),
LIGHTBLUE (52, 170, 220); //... etc, this is a shorted list
private Colors(final Integer red, final Integer green, final Integer blue) {
this.red = red;
this.green = green;
this.blue = blue;
}
private final Integer red, green, blue;
public String getRGB() {
return red + "," + green + "," + blue;
}
}
public class HelloWorld{
public static void main(String[] args) {
String test = Colors.LIGHTBLUE.getRGB();
System.out.println(test);
}
}
请改用此枚举:
public enum COLOR {
GREY(142, 142, 147);
private int red;
private int blue;
private int green;
private COLOR(int r, int g, int b) {
this.red = r;
this.green = g;
this.blue = b;
}
public int getRedValue() {
return red;
}
public int getBlueValue() {
return blue;
}
public int getGreenValue() {
return green;
}
@Override
public String toString() {
return red + "," + green + "," + blue;
}
}
或许可以将其更改为以下内容:
public enum Colors {
GREY(142, 142, 147),
RED(255, 59, 48),
GREEN(76, 217, 100),
PURPLE(88, 86, 214),
LIGHTBLUE (52, 170, 220); //... etc, this is a shorted list
private final int r;
private final int g;
private final int b;
private final String rgb;
private Colors(final int r,final int g,final int b) {
this.r = r;
this.g = g;
this.b = b;
this.rgb = r + ", " + g + ", " + b;
}
public String getRGB() {
return rgb;
}
//You can add methods like this too
public int getRed(){
return r;
}
public int getGreen(){
return g;
}
public int getBlue(){
return r;
}
//Or even these
public Color getColor(){
return new Color(r,g,b);
}
public int getARGB(){
return 0xFF000000 | ((r << 16) & 0x00FF0000) | ((g << 8) & 0x0000FF00) | b;
}
}
公共枚举颜色{
灰色(142142147),
红色(255,59,48),
绿色(76217100),
紫色(88,86,214),
浅蓝色(52170220);/…等等,这是一个简短的列表
私人终审法院;
私人终审法院;
私人最终int b;
私有最终字符串rgb;
专用颜色(最终整数r、最终整数g、最终整数b){
这个。r=r;
这个.g=g;
这个.b=b;
这个.rgb=r+“,“+g+”,“+b;
}
公共字符串getRGB(){
返回rgb;
}
//您也可以添加这样的方法
公共int getRed(){
返回r;
}
公共int getGreen(){
返回g;
}
公共int getBlue(){
返回r;
}
//甚至这些
公共颜色getColor(){
返回新颜色(r、g、b);
}
public int getARGB(){
返回0xFF000000|((r看起来还行,但我更喜欢将r-G-B
作为3个独立的字段,而不是一个包含所有值的字符串。这个问题似乎与主题无关,因为它是关于检查工作代码的。请询问您关于枚举用于常量值的问题,可以在程序开发时枚举。如果你只使用了有限数量的颜色
,那么你的方法就行了。@Bohemian抱歉,你是对的。我是在寻求帮助,作为一个新手,我正在努力理解emunsThanks,下面的所有评论。他们都建议将字符串拆分为整数,这似乎是一件明智的事情。总体目标是允许对象在我的整个co中运行de/要快速分配相同RGB颜色的类(例如,线、圆等都可以分配为“浅蓝色”)。为什么Integer
而不是int
?!只是好奇。没有区别。但是在OO世界中,使用对象有很多好处:)
public enum Colors {
GREY(142, 142, 147),
RED(255, 59, 48),
GREEN(76, 217, 100),
PURPLE(88, 86, 214),
LIGHTBLUE (52, 170, 220); //... etc, this is a shorted list
private final int r;
private final int g;
private final int b;
private final String rgb;
private Colors(final int r,final int g,final int b) {
this.r = r;
this.g = g;
this.b = b;
this.rgb = r + ", " + g + ", " + b;
}
public String getRGB() {
return rgb;
}
//You can add methods like this too
public int getRed(){
return r;
}
public int getGreen(){
return g;
}
public int getBlue(){
return r;
}
//Or even these
public Color getColor(){
return new Color(r,g,b);
}
public int getARGB(){
return 0xFF000000 | ((r << 16) & 0x00FF0000) | ((g << 8) & 0x0000FF00) | b;
}
}