java的泛型不仅可以用到类中,还可以应用到类的包含参数化方法,类可以是泛型类,也可以是普通类。也就是说是不是泛型方法与类没有关系。
何时使用泛型方法?
无论何时只要你能做到,你就尽量使用泛型方法,如果泛型方法可以取代将整个类泛型化,那么久应该只使用泛型方法。
定义泛型方法
只需将泛型参数列表置于返回值前。见下面的例子
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);
}
}
/* 输出:
java.lang.String
java.lang.Integer
java.lang.Double
java.lang.Float
java.lang.Character
GenericMethods
*///:~
注意
在使用泛型类时,必须在创建对象的时候指定类型参数的值,而在使用泛型方法时,通常不用指定参数类型。因为编译器会帮助我们找出具体的类型。这叫做类型参数推断。
上面的方法f()被重载很多次 不管是String、还是Integer等类型,编译器都会帮助我们推断出来。