java - 如何从Map中获取对象值?

标签 java

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/

相关文章:

java - 如何用 RequestConfig 替换弃用的 httpClient.getParams()?

java - 微软翻译API问题

Java邮件 : Searching for emails

Java Mockito 一项测试导致另一项测试失败

java - 使用 libgdx 绘制曲线

java - HTTP Builder/Groovy - 获取源文本_和_ XmlSlurper 输出?

java - 标准和最佳实践 : Exporting Tree Structure Data to CSV

java - 使用 javaagents 在 Java 中进行基本 block 日志记录

java - Spring MockMvc - 如何测试 REST Controller 的删除请求?

java - Java multi catch 中异常变量的类型是什么?