在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)在java中:尝试{Class color=Class.forName(“java.awt.color”);Field=color.getField(“blue”);color blue=(color)Field.get(null);}catch(异常e){e.printStackTrace();}这些颜色来自哪里?它们是否对应于Java的常量?为了参数起见,是的,没有颜色与静态的颜色不匹配。