在java中访问常量字段值的字符串表示形式

时间:2014-03-06 08:40:54

标签: java field constants

我使用的导入类具有使用以下设置的常量字段值:

public static final int BLUE = 1;
public static final int GREEN = 2;

有没有办法从int值中获取常量字段值的字符串表示?

即。给定值2我想得到一串绿色。

P.S。这不是我的班级所以我不能使用ENUMs

2 个答案:

答案 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());
    }
}