09/11/06 19:33:28
べっ別に>>610の(ry
●<T>はクラスとメソッドに使用できる。<>内は任意の識別子を指定できる。
class Java<Type>{}
<Type> void method(Type t){}//戻り値の型より前に指定
×class Java<?>{}
×<?> void method(? t){}
●<?>は「<T>を使用したクラス・インタフェース」の型を宣言する時に使用できる。
(参照変数宣言時、メソッド戻り値の型など) <>内は識別子ではなく?を指定する。
Java<?> j;
Java<?> method(){return new Java<Object>();}
×Java<Type> j;
×Java<Type> method(){return new Java<Object>();}
●<T>は参照宣言時や渡されるメソッドの引数で型が決定する。
class Java<T>{} → Java<Integer> j;
<T> void method(T t){} → method(new Integer());
●<?>は代入するオブジェクトや戻り値で型が決定する。
Java<?> j = new Java<Integer>();
Java<?> method(){return new Java<Integer>();}
●仮にクラス宣言で<T>、そのクラスの参照宣言時に<?>とした場合
最終的にオブジェクト代入や戻り値で型を指定しなければならない。
class Java<T>{ }のとき
Java<?> j = new Java<Integer>();
Java<?> method(){return new Java<Integer>();}