汎用メソッドと汎用パラメータ
3298 ワード
List<Integer> list = new ArrayList<Integer>();
public interface Test<T> {
T aaa(T t);
}
public class Demo implements Test<Integer> {
@Override
public Integer aaa(Integer t) {
// TODO Auto-generated method stub
return null;
}
}
3.1メソッドの汎用とクラスの汎用には必然的な関連はない,すなわち汎用クラスでなくても,汎用メソッドとはそのメソッドが汎用であるメソッド(ここではEを用い,以下の汎用クラスの区別のために用いる)であり,戻り値とは関係なくクラスDemoを実現するメソッドaaaのパラメータは呼び出し者によって決定されるが,戻り値はintである.
public interface Test {
int aaa(E e);
}
public class Demo implements Test {
@Override
public int aaa(E e) {
return 0;
}
}
3.2汎用クラスと汎用メソッドが一緒に現れると、汎用Tは実装クラスが指定した汎用タイプに置き換えられ、パラメータeは呼び出し者によって決定される.もちろん、戻りたいタイプはパラメータによって決定されるが、IntegerをEに変更することもできる
public interface Test<T> {
T aaa(E e, T t);
}
public class Demo implements Test<Integer> {
@Override
public Integer aaa(E e, Integer t) {
return null;
}
}