如何返回常量字段

时间:2014-06-23 06:25:14

标签: java

我有一个CSV文件,其中包含要在webservice上传的状态列表(所有类型都在String中)。每个州都有一个国家/地区(国家/地区类型)。

国家/地区类内容是这样的

enter image description here

注意:Country类不是我的,所以我无法更改

我可以使用Country.US访问“United State”值。是否有可能以相反的方式访问它? "United States"那么我的返回值是Country.US?我需要它在Country类型中,所以我可以在webservice上传递它。

enter image description here

3 个答案:

答案 0 :(得分:1)

你怎么能期望这种方法能够神奇地发挥作用? 如果您有2个类,每个类都包含一个解析为“美国”的静态字段,该怎么办?当JVM在某处看到String时,它应该神奇地选择给你什么?或者它应该随意给一个?

你当然可以使用某种自定义解析器来完成它。有点像:

public Country countryFromString(final String s) {
  switch s:
    case "United States": return Country.US;
    default: return null;
}

答案 1 :(得分:0)

这样你就可以得到变量:

Field[] fields = Country.class.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
    System.out.println(fields[i]);
}

返回Country.US的输出:

public static final java.lang.String com.package.test.Country.US

答案 2 :(得分:0)

如果所有Constant类都有静态的最终String国家,则可以使用反射。但仍然像人们说我不明白这一点。

    for (Field field : Country.class.getDeclaredFields()) {
        if((String)field.get(Country.class).equals("United state")){
            return field.getName();
        }
    }
    //Throw exception