我正在使用包含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");
哪个不起作用
答案 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();
}