在java中按名称获取颜色

时间:2016-02-29 05:53:13

标签: java colors

我正在使用包含Color对象的对象模型。

import java.awt.Color;

public class MyObject {

    ...
    private String color;

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

}

在json查询的响应中,我留下了一个颜色的物理名称

  

"颜色":"蓝色"

我知道 Color 对象有静态,即

Color.blue;

有没有办法将实际颜色名称解码为Color对象?或者我是否需要自己手动将字符串映射到rgb值?

我正在寻找应该是这个

输出的东西
Color c = new Color("blue");

哪个不起作用

2 个答案:

答案 0 :(得分:3)

如果您的名字与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;
    }
}

答案 1 :(得分:1)

你可以这样做:

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