これを知っておくべきですが、何らかの理由でこれを理解できません。キャストリスト<Object>リスト<Map <String、Object >>
なぜオブジェクトのリストList<Object>
をマップリストList<Map<String, Object>>
にキャストできないのですか?リスト内のすべてのオブジェクトはタイプMap<String, Object>
のオブジェクトなので、なぜキャストできないのですか?
私ができることは、new ArrayList<Map<String, Object>>();
を作成し、リストを反復して各アイテムをキャストで追加することです。
List<Object> dataList;
..
//Why doesn't this work?
List<Map<String, Object>> rxData = (List<Map<String, Object>>)dataList;
//This works, but is there a better way?
rxData = new ArrayList<Map<String, Object>>();
for (Object data : dataList) {
rxData.add((Map<String, Object>)data);
}
なぜですか?なぜなら、Javaのジェネリックは再解析可能ではないからです。実際にJVMがキャストをチェックする方法はありません。とにかくやりたいだけなら、@SuppressWarnings( "unchecked")は解決策だと思うが、私はそれをテストしなかった。 – markspace
Java generics FAQ:http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#What%20is%20the%20SuppressWarnings%20annotation? – markspace