如何将 Map<String,Object>
转换为 Map<String,String>
?
以下方法不起作用:
Map<String,Object> map = new HashMap<String,Object>(); //Object is containing String
Map<String,String> newMap =new HashMap<String,String>(map);
如何将 Map<String,Object>
转换为 Map<String,String>
?
以下方法不起作用:
Map<String,Object> map = new HashMap<String,Object>(); //Object is containing String
Map<String,String> newMap =new HashMap<String,String>(map);
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>
Map<String,Object> map = new HashMap<String,Object>();
Map<String,String> newMap = Maps.transformValues(map, Functions.toStringFunction());
虽然您可以通过强制转换和抑制警告来实现此目的
Map<String,Object> map = new HashMap<String,Object>();
// Two casts in a row. Note no "new"!
@SuppressWarnings("unchecked")
Map<String,String> newMap = (HashMap<String,String>)(Map)map;
Objects
(!!)进行了前半部分的处理,然后决定使用正确的类型作为 String
进行后半部分的处理,所以你从 Object
向 String
进行了缩小类型转换。幸运的是,在 Java 中你可以这样做(在这种情况下很容易)- 但这只是掩盖了你在第一半使用弱类型的事实。不好的实践,没有争论。注意: 泛型强类型和类型转换仅存在于 .java 代码中。编译为 .class 后,我们得到没有泛型类型参数的原始类型(Map 和 HashMap),以及键和值的自动类型转换。但这极大地帮助了,因为 .java 代码本身是强类型和简洁的。
Map<String, Object> map = new Map<String, Object>() map.put("key", new Integer(42));
- Shreyos Adikari