在java中按名称获取颜色

在java中按名称获取颜色,java,colors,Java,Colors,我使用的对象模型包含颜色对象 import java.awt.Color; public class MyObject { ... private String color; public void setColor( Color c ) ... public Color getColor() ... ... } 在json查询的响应中,我只剩下一个颜色的物理名称 “颜色”:“蓝色” 我知道颜色对象具有静态特性,即 Color.blue; 有没

我使用的对象模型包含
颜色
对象

import java.awt.Color;

public class MyObject {

    ...
    private String color;

    public void setColor( Color c ) ...
    public Color getColor() ...
    ...

}
在json查询的响应中,我只剩下一个颜色的物理名称

“颜色”:“蓝色”

我知道颜色对象具有静态特性,即

Color.blue;
有没有办法把实际的颜色名称解码成颜色对象?或者我需要自己手动将字符串映射到rgb值吗

我正在寻找的东西,应该是这个输出

Color c = new Color("blue");

这不起作用

您可以这样做:

try {
        Class color=Class.forName("android.graphics.Color");
        Field field=color.getField("BLUE");
        int blue=field.getInt(null);
    } catch (Exception e) {
        e.printStackTrace();
    }

如果您的名称与Java常量的名称相对应,则可以使用反射来映射它们:

public static Color getColorByName(String name) {
    try {
        return (Color)Color.class.getField(name.toUpperCase()).get(null);
    } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) {
        e.printStackTrace();
        return null;
    }
}

抱歉,如果我不清楚,最终输出需要是一个颜色对象。我曾想过使用class.forName,但不确定如何使用。问题中没有任何内容建议使用Android。我想用
android.graphics
交换
java.awt
。同样,OP想要这个对象。我会使用
Color blue=field.get(null)