1

假设我们有多个不同Map<?,?>的未知类型键和未知类型值的无类型映射,并且已知它们之间存在Map<String,Object>Map<Integer,Object>映射。

是否有办法检查、区分并安全地将它们转换为适当的类型映射?

4

2 回答 2

1

由于类型擦除,无法在运行时确定泛型类的类型参数。但是,如果映射已填充,并且您知道每个 Map 是 Map(String, Object) 或 Map(Integer, Object),您可以简单地检查每个 Map 的第一个键并相应地进行转换。

这有什么用例?

于 2012-10-17T09:23:35.290 回答
1

尝试

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>");
        }
于 2012-10-17T09:25:58.997 回答