37_汎用型の内部原理とより深い応用

1063 ワード

汎用型はコンパイラに見せるだけです
汎用型はjavacコンパイラに提供され、セット内の入力タイプを限定し、コンパイラがソースプログラムの不正な入力をブロックするようにすることができ、コンパイラがタイプの説明をもたらすセットをコンパイルすると「タイプ」情報が除去され、プログラムの実行効率に影響を与えず、パラメトリック化された汎用型に対してgetClass()メソッドの戻り値は元のタイプと全く同じである.コンパイルにより生成されたバイトコードは汎用型のタイプ情報を除去するので,コンパイラをスキップできれば,ある汎用型の集合に他のタイプのデータを加えることができ,例えば反射で集合を得,そのaddメソッドを呼び出すことができる.
多く言わないで、コードをつけます!
 
/***** , *****/
        List<Integer> list0=new ArrayList<Integer>();
        list0.getClass().getMethod("add", Object.class).invoke(list0, "ljl");// Integer String "ljl"
        System.out.println(list0.get(0));//ljl        get  Integer, String