15.4泛型方法(类型参数推断)

2024-10-29  本文已影响0人  陈晓松快点跑

无论何时,只要你能做到,你就应该尽量使用泛型方法。
也就是说,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法。
因为它可以使事情更清楚明白。

另外,对于一个static的方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力,就必须使其成为泛型方法。

要定义泛型方法,只需将泛型参数列表置于返回值之前,就像下面这样:

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);
    }
}

使用泛型方法的时候,通常不必指明参数类型,因为编译器会为我们找出具体的类型。这称为类型参数推断。

因此,我们可以像调用普通方法一样调用f(),而且就好像是f()被无限次地重载过。它甚至可以接受GenericMethods作为类型参数。

上一篇 下一篇

猜你喜欢

热点阅读