複数 - java<?>



特定のJavaジェネリックキャストにおける型安全警告の意味は何ですか? (1)

この警告が表示されるのは、Javaが実行時に総称を使用するオブジェクトに型情報を実際に格納していないためです。 したがって、 object が実際に List<String> である ClassCastException 、実行時に ClassCastException しません。ただし、リスト内から項目にアクセスするまでは、変数で定義されているジェネリック型と一致しません。

アイテムがリストに追加されている場合、この不正なジェネリック型情報と共に、これがさらに複雑になる可能性があります。 まだリストへの参照を保持しているが正しい総称型情報を持つコードは、矛盾したリストになります。

警告を消すには:

List<?> list = (List<?>) object;

ただし、間違った型のオブジェクトを追加しようとしているかどうかはコンパイラによって認識されないため、addなどの特定のメソッドを使用することはできません。 上記は多くの状況で機能しますが、addなどの制限された方法を使用する必要がある場合は、Eclipseの黄色の下線(または SuppressWarning アノテーション)を使用する必要があります。

Java警告の 意味は何ですか?

型安全:ObjectからList <Integer>へのキャストは、実際には消去された型Listに対してチェックを行っています

次のコードのように、Objectを一般的な情報を持つ型にキャストしようとすると、この警告が表示されます。

Object object = getMyList();
List<Integer> list = (List<Integer>) object;




type-safety