無論何時,只要你能做到,你就應(yīng)該盡量使用泛型方法。
也就是說,如果使用泛型方法可以取代將整個類泛型化,那么就應(yīng)該只使用泛型方法。
因為它可以使事情更清楚明白。
另外,對于一個static的方法而言,無法訪問泛型類的類型參數(shù),所以,如果static方法需要使用泛型能力,就必須使其成為泛型方法。
要定義泛型方法,只需將泛型參數(shù)列表置于返回值之前,就像下面這樣:
public class GenericMethods {
public <T> void f(T x) {
System.out.println(x.getClass().getName());
}
public static void main(String[] args) {
GenericMethods gm = new GenericMethods();
gm.f("");
gm.f(1);
gm.f(1.0);
gm.f(1.0F);
gm.f('c');
gm.f(gm);
}
}
使用泛型方法的時候,通常不必指明參數(shù)類型,因為編譯器會為我們找出具體的類型。這稱為類型參數(shù)推斷。
因此,我們可以像調(diào)用普通方法一樣調(diào)用f(),而且就好像是f()被無限次地重載過。它甚至可以接受GenericMethods作為類型參數(shù)。