ソース:コレクションオブジェクトは、任意の型を格納することができるので、変換時に例外が発生しキャストするために喜んであり、この問題を解決するためにそうするジェネリックと呼ばれる機構を提供します
ジェネリック:幅広い種類の、事前にコンパイルする明確なデータの仕事の種類、配列の特徴を学びます
一般的なメリット:
- これは、型変換の問題を回避します
- 黄色の警告ラインを減少させることができます
- 私たちは、書き込みコードを簡素化することができます
私は一般的な使用することができた場合:QのAPIを、私たちは、このような<E>を参照するとき
パブリック クラスGenericDeom { 公共 静的 ボイドメイン(文字列[]引数){ // コレクションオブジェクト作成 コレクションC = 新しい新規のArrayList(); // 要素オブジェクトの作成 学生= S 新しい新学生(「zhangsan」、18であるが)、 学生S2 = 新しい新学生( "リシは" ,. 19 ); // 要素オブジェクトの追加 c.add(S)を、 c.add(S2); // オブジェクトのコレクション横断 イテレータそれは= (c.iterator)を、 一方(it.hasNext()) { 文字列STR =(文字列)it.next(); System.out.println(STR)。 // 学生STU = it.next(); // するSystem.out.println(stu.name)。 } }
スレッドの例外「メイン」とjava.lang.ClassCastException:com.kundada3.Studentはjava.lang.Stringでにキャストすることはできません
com.kundada3.GenericDeom.mainで(GenericDeom.java:35)
理由:学生を追加し、文字列に回すために間違っています
ジェネリッククラスをインスタンス化するときは、Eの特定のタイプを指定する必要があります。
パブリック クラスGenericDeom { 公共の 静的な 無効メイン(文字列[] args)を{ //は、コレクションオブジェクトの作成 コレクション<学生> C = 新しい新しいの ArrayListを<学生> (); // 要素オブジェクトの作成 学生= S 新しい新しい 18がある学生( "zhangsan"、); 学生S2は = 新しい新しい学生( "リージは" ,. 19 ); // 要素オブジェクトの追加 c.add(S)を、 c.add(S2); // オブジェクトのコレクショントラバース Iteratorを<学生> ITは= c.iterator() ; 一方(it.hasNext()){ //STR =文字列(String)をit.next(); // のSystem.out.println(STR); スチューデントSTU = it.next(); のSystem.out.println(stu.name); } } } クラスの学生{ 文字列名前; INT 年齢; // メンバ変数の初期化を容易にする 公衆学生(文字列名、int型の年齢){ この .nameの= 名; この .age = 年齢; } }