私のJavaプログラムでは、List<? extends SomeBaseClass>
のオブジェクトをList<SomeBaseClass>
にキャストする必要があります。私が直接キャストすると、コンパイラはチェックされていないキャストがあることを警告(警告を表示)します。すべてのオブジェクトをスーパークラスに変換できることは確かですが、コンパイラはそれに気付かず、チェックされていないキャストを報告します。どのように警告を取り除くことができますか? @SupressWarnings( "未チェック")以外の方法はありますか?スーパークラスのリストにキャストするときのチェックされていないキャスト
P .:コードはうまく動作します。私は物事を行う良い方法があるかどうか不思議です。
編集:
ソリューション:彼は、彼は将来的にリストを変更しないと確信している場合は、1つだけのキャストのこのタイプを行う必要があります。しかし、個々のオブジェクトをキャストするときは、キャストすることをお勧めします。
一般的に、ワイルドカードタイプを返さないことで、これらの変換の必要性を減らすことができます。ワイルドカード型を引数として取るメソッドの中では、ワイルドカード(Iterator変数など)を繰り返す必要がある場所はほとんどなくてはなりません。実際にワイルドカードを繰り返すので、誤ってリストに追加することはありません未知のサブタイプです。 –