Java SEの1.5する前に、一般的なケースなしで、オブジェクトタイプを参照することによって達成パラメータは、「任意」と明示的なDOの欠点の「任意」であるキャストこれは、と開発者が実際のパラメータータイプを予測できる場合は、変換が必要です。以下のために必須の変換エラー、コンパイラがエラーを要求しないことがあり、それは実行時に異常が現れ、これはセキュリティ上のリスクがあります。
public class Gen <T> { private T ob; // ジェネリックメンバー変数を定義します public Gen(T ob){ this .ob = ob; } public T getOb(){ return ob; } public void setOb(T ob){ this .ob = ob; } public void showType(){ System.out.println( "Tの実際のタイプは:" + ob.getClass()。getName()); } }
public class GenDemo { public static void main(String [] args){ // ジェネリッククラスの整数バージョンを定義しますGen Gen <Integer> intOb = new Gen <Integer>(88 ); intOb.showType(); int i = intOb.getOb(); System.out.println( "value =" + i); System.out.println( "----------------------- ----------- " ); // ジェネリッククラスの文字列バージョンを定義Gen Gen <String> strOb = new Gen <String>(" Hello Gen! " ); StrOb.showType(); 文字列s =strOb.getOb(); System.out.println( "value =" + s); } }
つまり、
ジェネリックスの利点は、コンパイル時に型の安全性がチェックされ、すべての型強制が自動的かつ暗黙的に行われるため、コードの再利用率が向上し、Objectのように強制する必要がないということです。