1

Map<?,?>不明な型キーと不明な型値の複数の異なる型指定されていないマップがあり、それらの間にMap<String,Object>Map<Integer,Object>マップがあることがわかっているとします。

それらをチェックして区別し、適切な型付きマップに安全にキャストする方法はありますか?

4

2 に答える 2

1

型消去のため、実行時にジェネリッククラスの型パラメーターを決定することはできません。ただし、マップにデータが入力されていて、各マップがMap(String、Object)またはMap(Integer、Object)のいずれかであることがわかっている場合は、各マップの最初のキーを調べて、それに応じてキャストできます。

これのユースケースは何ですか?

于 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 に答える