------
androidトレーニング、
JAvaトレーニング、java基礎学習技術総括、ご交流お待ちしております!-------
汎用型
体験汎用 jdk 1.5以前の集合クラスでどのような問題があったか ArrayList collection1=new ArrayList(); collection1.add(1); collection1.add(1L); collection1.add("abc"); int i=(Integer)collection1.get(1);//コンパイル時に他のi行の変換を強制し、実行時にエラーが発生しました. jdk 1.5の集合クラスは、集合を定義するときに、集合にどのタイプのデータを入れるかを明確に示すことを望んでいます. 指定されたタイプの予期せぬデータを追加 ArrayList
collection2=new ArrayList(); collection2.add(1); //コンパイル時にエラーを報告 collection2.add(1L); //コンパイル時にエラーを報告 collection2.add("abc"); String str=collection2.get(0);//強制変換は不要 汎用型はjavacコンパイラに提供され、セット内の入力タイプを限定し、コンパイラがソースプログラムの 不正に入力すると、コンパイラがタイプ説明付きの集合をコンパイルすると「タイプ」情報が除去され、プログラムの実行効率に影響を与えません. パラメータ化された汎用タイプの場合、getClass()メソッドの戻り値は元のタイプとまったく同じで、ある汎用セットに移動できます. 他のタイプのデータを加え、例えば反射で集合を得てaddメソッドを呼び出すとよい. 汎用性の理解 ArrayListクラス定義およびArrayListクラス参照には、次の用語が含まれます. 全体をArrayList汎用タイプまたはタイプパラメータと呼ぶ ArrayList全体をパラメトリックタイプと呼ぶ ArrayListのIntegerをタイプパラメータと呼ぶインスタンスまたは実際のタイプのパラメータ ArrayListのIntegerでtypeofと呼ぶ ArrayListを元のタイプと呼ぶ パラメトリックタイプと元のタイプの互換性: パラメトリックタイプは、元のタイプのオブジェクトを参照し、レポート警告をコンパイルします.たとえば、 Collection c=new Vector(); 元のタイプは、パラメトリックタイプのオブジェクトを参照し、コンパイル時に警告を報告します.たとえば、次のようにします. Collection c=new Vector(); パラメトリックタイプは、タイプパラメータの継承関係を考慮しません. Vecor v=new Vector