Map<?,?>
不明な型キーと不明な型値の複数の異なる型指定されていないマップがあり、それらの間にMap<String,Object>
とMap<Integer,Object>
マップがあることがわかっているとします。
それらをチェックして区別し、適切な型付きマップに安全にキャストする方法はありますか?
型消去のため、実行時にジェネリッククラスの型パラメーターを決定することはできません。ただし、マップにデータが入力されていて、各マップがMap(String、Object)またはMap(Integer、Object)のいずれかであることがわかっている場合は、各マップの最初のキーを調べて、それに応じてキャストできます。
これのユースケースは何ですか?
試す
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>");
}