最近遇到一个这样的问题,
如上图,有一个Object数组,数组中每个object又是一个个的key-value类型,想要获取key对应的value值,尝试了下强转,一直报错。然后尝试了下如下思路(通过反射),成功的解决了我的问题。
/**
* 单个对象的某个键的值
*
* @param obj
* 对象
*
* @param key
* 键
*
* @return Object 键在对象中所对应得值 没有查到时返回空字符串
*/
public static String getValueByKey(Object obj, String key) {
// 得到类对象
Class userCla = (Class) obj.getClass();
/* 得到类中的所有属性集合 */
Field[] fs = userCla.getDeclaredFields();
for (int i = 0; i < fs.length; i++) {
Field f = fs[i];
f.setAccessible(true); // 设置些属性是可以访问的
try {
System.out.println(f.getName());
if (f.getName().endsWith(key)) {
System.out.println("单个对象的某个键的值==反射==" + f.get(obj));
if(f.get(obj).toString().contains(".csv")){
return f.get(obj).toString();
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
// 没有查到时返回空字符串
return "";
}