あなたは、一般的にオブジェクトを作成すると、未知のタイプの特定のタイプを決定します。:指定され、デフォルトの型がオブジェクト型である、我々はこの種の買収で取得何ジェネリックがない場合など、キャストすることができますが、異常型変換java.lang.ClassCastExceptionが正常に動作することができるが、オブジェクトの時間であり、
パブリック 静的 ボイドメイン(文字列[]引数){ // 法1()。 地図<文字列、オブジェクト>マップ= 新しい HashMapの<> (); map.put( "KEY1"、 "123" )。 map.put( "KEY2"、456 ); System.out.println((String)をmap.get( "キー1")); // 123 のSystem.out.println((String)をmap.get( "KEY2")); // java.lang.ClassCastExceptionが }
だから私たちはマップの値を取るとき、あなたは強いターンに対応の正しい種類を使用する必要があり、それは簡単に間違って行くことができますが、あなたはジェネリックを使用する場合さらさコンパイル時に事前に異常であることができ、例えば:
パブリック 静的 ボイドメイン(文字列[]引数){ // 法1()。 // 方法2(); 地図<文字列、文字列>マップ= 新しい HashMapの<> (); map.put( "KEY1"、 "123" )。 map.put( "KEY2"、456 ); //编译不通过 するSystem.out.println((String)をmap.get( "キー1")); System.out.println((String)をmap.get( "KEY2")); }
ClassCastExceptionの概要はコンパイルが失敗へのコンパイル時に転送中に実行することです。転送トラブルの強いタイプを避けてください。
もちろん、これはのみの使用の最も基本的な形、一般的な使用量の合計の下の種の数のための最初の、との使用であり、
- およびフォーマットを含む一般的なクラスを定義:{} publicクラスのArrayList <E> <ジェネリックを表す変数>クラス修飾子のクラス名
- フォーマットを含む一般的な定義および方法:修飾子戻り型メソッド名(パラメータ)<汎用の可変代表> {}パブリック<E>ボイド方法(E電子)
- 一般的なインターフェースフォーマットを含む定義と<変数を表すジェネリック>界面改質剤のインタフェース名{}パブリックインターフェイス<E>