「リスト型の式にはチェックなしの変換が必要です...」を修正するにはどうすればよいですか? 質問する

「リスト型の式にはチェックなしの変換が必要です...」を修正するにはどうすればよいですか? 質問する

Java スニペットの場合:

SyndFeedInput fr = new SyndFeedInput();
SyndFeed sf = fr.build(new XmlReader(myInputStream));
List<SyndEntry> entries = sf.getEntries();

最後の行は警告を生成する

「型の式はList、準拠するためにチェックなしの変換が必要ですList<SyndEntry>

これを修正する適切な方法は何ですか?

ベストアンサー1

これはJava 5以前のAPIを扱うときによくある問題です。エリクソンの解決策次のような汎用メソッドを作成できます。

public static <T> List<T> castList(Class<? extends T> clazz, Collection<?> c) {
    List<T> r = new ArrayList<T>(c.size());
    for(Object o: c)
      r.add(clazz.cast(o));
    return r;
}

これにより、次のことが可能になります。

List<SyndEntry> entries = castList(SyndEntry.class, sf.getEntries());

このソリューションは、キャストによって要素が実際に正しい要素型であることを確認するため、安全であり、 を必要としませんSuppressWarnings

おすすめ記事