假设我们有多个不同Map<?,?>
的未知类型键和未知类型值的无类型映射,并且已知它们之间存在Map<String,Object>
和Map<Integer,Object>
映射。
是否有办法检查、区分并安全地将它们转换为适当的类型映射?
由于类型擦除,无法在运行时确定泛型类的类型参数。但是,如果映射已填充,并且您知道每个 Map 是 Map(String, Object) 或 Map(Integer, Object),您可以简单地检查每个 Map 的第一个键并相应地进行转换。
这有什么用例?
尝试
if(((Map.Entry)map.entrySet().iterator().next()).getKey().getClass().getName().equals("java.lang.Integer")){
System.out.println("Map<Integer,Object>");
}else{
System.out.println("Map<String,Object>");
}