[解決済み] Java のジェネリックキャストにおける型安全警告の意味は?
2023-07-24 01:39:38
質問
の意味は何ですか? Java の警告 ?
型安全性です。Object から List<Integer> へのキャストは、実際には消去された List 型に対してチェックされています。
以下のコードのように、Objectを一般的な情報を持つ型にキャストしようとすると、この警告が表示されます。
Object object = getMyList();
List<Integer> list = (List<Integer>) object;
どのように解決するのですか?
この警告は、Javaがジェネリックスを使用するオブジェクトに、実際には実行時に型情報を保存していないために出ています。 したがって、もし
object
が実際には
List<String>
がない場合は
ClassCastException
が発生しません。ただし、変数で定義された一般型にマッチしないリストからのアイテムがアクセスされる場合を除きます。
この間違った一般的な型の情報を持つリストへ項目が追加された場合、さらに複雑な事態を引き起こす可能性があります。 リストへの参照をまだ保持しているが、正しい一般的な型の情報を持つ任意のコードは、現在、一貫性のないリストを持つことになります。
警告を取り除くには、試してみてください。
List<?> list = (List<?>) object;
ただし、コンパイラは不正な型のオブジェクトを追加しようとしているかどうかわからないため、addのような特定のメソッドを使用することができないことに注意してください。 上記は多くの状況で機能しますが、addや同様の制限のあるメソッドを使用しなければならない場合、Eclipseで黄色の下線(あるいは
SuppressWarning
アノテーション) を使用する必要があります。
関連
-
NullPointerException - java.lang.
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] チェックされていないキャストの警告に対処するにはどうすればよいですか?
-
[解決済み] reinterpret_castはいつ使うのか?
-
[解決済み] Javaにおける菱形演算子(<>)のポイントは何ですか?
-
[解決済み】array[idx++]+="a "は、Java 8ではidxを1回増やすが、Java 9と10では2回増やすのはなぜか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
プロジェクトの依存関係を解決できない。
-
maven レポート エラー 解決不可能な親POM
-
API の戻り値を処理するために ResponseEntity を使用する
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション