生のリストは問題なく変換されList<?>
ます。生のリストのリストを のリストに変換できないのはなぜList<?>
ですか?
{ // works
List raw = null;
List<?> wild = raw;
}
{ // Type mismatch: cannot convert from List<List> to List<List<?>>
List<List> raw = null;
List<List<?>> wild = raw;
}
バックストーリー( xy問題を軽減するため):
私が使用している API は return を返しますList<JAXBElement>
。私はそれが常にであることをたまたま知っていますList<JAXBElement<String>>
。ループして独自の をビルドする予定List<String>
ですが、 を書くときに未加工の型コンパイラの警告を修正しようとしました (抑制はしません) List<JAXBElement> raw = api();
。
私は試した:
List<JAXBElement<?>> raw = api();
List<JAXBElement<?>> raw = (List<JAXBElement<?>>) api();
しかし、これらはタイプの不一致エラーを引き起こします。
興味深いことに、これは警告もエラーも発生しません。
for (JAXBElement<?> e : api()) {
// ...
}