我有一个CSV文件,其中包含要在webservice上传的状态列表(所有类型都在String中)。每个州都有一个国家/地区(国家/地区类型)。
国家/地区类内容是这样的
注意:Country类不是我的,所以我无法更改。
我可以使用Country.US
访问“United State”值。是否有可能以相反的方式访问它? "United States"
那么我的返回值是Country.US
?我需要它在Country类型中,所以我可以在webservice上传递它。
答案 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