言語

Collections.CheckedCollection(ICollection, Class) メソッド

定義

指定したコレクションの動的に型セーフ ビューを返します。

[Android.Runtime.Register("checkedCollection", "(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;", "")]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public static System.Collections.ICollection CheckedCollection(System.Collections.ICollection c, Java.Lang.Class type);
[<Android.Runtime.Register("checkedCollection", "(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;", "")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
static member CheckedCollection : System.Collections.ICollection * Java.Lang.Class -> System.Collections.ICollection

パラメーター

c
ICollection

動的に型セーフ ビューが返されるコレクション

type
Class

保持が許可 c 要素の型

返品

指定したコレクションの動的に型セーフ ビュー

属性

注釈

指定したコレクションの動的に型セーフ ビューを返します。 間違った型の要素を挿入しようとすると、すぐに ClassCastExceptionが発生します。 動的に型指定されたビューが生成される前にコレクションに誤って型指定された要素が含まれていること、およびそれ以降のすべてのコレクションへのアクセスがビューを介して行われると仮定すると、コレクションに誤って型指定 された 要素を含めることはできません。

言語のジェネリック メカニズムはコンパイル時 (静的) 型チェックを提供しますが、このメカニズムをオフにしたキャストで無効にすることはできます。 通常、これは問題ではありません。このようなチェックされていないすべての操作に対してコンパイラが警告を発行します。 ただし、静的な型チェックだけでは不十分な場合があります。 たとえば、コレクションがサード パーティのライブラリに渡され、ライブラリ コードが間違った型の要素を挿入してコレクションを破損させないようにすることが不可欠であるとします。

動的に型セーフ ビューを使用するもう 1 つの用途は、デバッグです。 プログラムが ClassCastExceptionで失敗し、正しく型指定されていない要素がパラメーター化されたコレクションに配置されたことを示しているとします。 残念ながら、この例外は、誤った要素が挿入された後にいつでも発生する可能性があるため、通常、問題の実際の原因に関する情報はほとんどまたはまったく提供されません。 問題が再現可能な場合は、プログラムを一時的に変更してコレクションを動的にタイプセーフ ビューでラップすることで、ソースをすばやく特定できます。 たとえば、次の宣言です。

{@code
                Collection<String> c = new HashSet<>();
            }

は、次の方法で一時的に置き換えることができます。

{@code
                Collection<String> c = Collections.checkedCollection(
                    new HashSet<>(), String.class);
            }

プログラムを再度実行すると、誤って型指定された要素がコレクションに挿入された時点で失敗し、問題の原因が明確に識別されます。 問題が修正されると、変更された宣言が元の宣言に戻される可能性があります。

返されるコレクションは hashCode を渡 せず 、操作をバッキング コレクションに渡しますが、 Objectequals メソッドと hashCode メソッドに依存します。 これは、バッキング コレクションがセットまたはリストである場合に、これらの操作のコントラクトを保持するために必要です。

指定したコレクションがシリアル化可能な場合、返されるコレクションはシリアル化可能になります。

nullは任意の参照型の値と見なされるため、返されるコレクションでは、バッキング コレクションが実行されるたびに null 要素を挿入できます。

1\.5 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象