Map<String, Object> subSource2 = (Map<String, Object>)departmentPHSSuportEmail.get("SubSource");
List<Map<String , Object>> myMap2 = (List<Map<String , Object>>)subSource2.get("value");
Map<String,Object> subSourceMap3 = myMap2.get(0);
String value = (String)subSourceMap3.get("value");
在这里,我不会将值指定为String
。它可以是任何类型。因此,当我将其转换为字符串时,仅应接受 String
值,而不能接受其他数据类型。那么有什么方法可以更改下面的代码吗?
String value = (String)subSourceMap3.get("value");
到另一个接受所有其他数据类型。
最佳答案
如果您可以在映射中拥有与该键关联的任何类型,并且只希望将 String
值转换为 String
,则需要在转换之前检查类型:
Object rawValue = subSourceMap3.get("value");
if (rawValue instanceof String) {
String value = (String) rawValue;
// do what you want with the String value
} else if (rawValue instanceof Long) { // or whatever else
// cast to Long
} else {
// throw an exception for unknown types or do nothing
}
但是,如果您的代码只能处理字符串表示形式,则只需对上面的 rawValue
调用 .toString()
(除非它为 null)
!)而不关心它的实际类型。
关于java - 如何从Map中获取对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59746684/