我使用的导入类具有使用以下设置的常量字段值:
public static final int BLUE = 1;
public static final int GREEN = 2;
等
有没有办法从int值中获取常量字段值的字符串表示?
即。给定值2我想得到一串绿色。
P.S。这不是我的班级所以我不能使用ENUMs
答案 0 :(得分:1)
我认为你的朋友在这里会是枚举
public enum Color {
BLUE(1), GREEN(2);
}
现在,如果您尝试获取Color.BLUE.ordinalValue()
,则会返回1
,如果您说Color.BLUE.name()
,则会返回BLUE
。
您也可以像在pojo类中一样在枚举中声明私有变量,并在构造函数中初始化它们。您可以编写getter方法来返回这些变量。
答案 1 :(得分:0)
如果您可以更改包含这些常量的类,最好使用value()
方法将其设为枚举。
否则,我建议使用反射构建Map<Integer, String>
一次,然后只进行地图查找:
Map<Integer, String> valueToStringMap = new HashMap<>();
for (Field field : Foo.class.getFields()) {
int modifiers = field.getModifiers();
if (field.getType() == Integer.class && Modifier.isPublic(modifiers)
&& Modifier.isStatic(modifiers)) {
valueToStringMap.put((Integer) field.get(null), field.getName());
}
}