2

私は次のコードをアップグレードしています:

return this.getMethod().execute(mp);

executeメソッドに署名がある場合:

public Map<String,Object> execute(Object mp)

メソッドの戻りがであると期待するコードがありますMap<String, List<Map<String, String>>>が、コンパイラーは変換を窒息させています。だから私は/これを適切にキャストするにはどうすればよいですか?また、Java 5と6の間に変更があり、これによりコンパイル時の問題が発生しますか?

4

2 に答える 2

6

返されるマップに type の値のみが含まれることが確実である限りList<Map<String, String>>二重キャストを使用する必要があります。

Map<String, Object> map = this.getMethod().execute(mp);
@SuppressWarnings("unchecked") //thoroughly explain why it's okay here
Map<String, List<Map<String, String>>> mapWithNarrowedTypes =
        (Map<String, List<Map<String, String>>>)(Map<?, ?>)map;
return mapWithNarrowedTypes;
于 2012-11-14T16:35:03.553 に答える