getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type然后将其转换ParameterizedType。。getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。[0]就是这个数组中第一个了。。
简而言之就是获得超类的泛型参数的实际类型。。
参数化类型在java中称为泛型
Java泛型方法的声明:
[b][访问权限修饰符] [static] [final] <类型参数列表> 返回值类型 方法名([形式参数列表])[/b]
[]表示为可选的。
public static Pair minmax(T[] a)
是指 类型参数列表,安装李兴华一书的原话来说T是个未知的类型,由调用它(指泛型方法本身)的具体参数来决定的类型。【方法中传入或返回的泛型类型由调用方法时所设置的参数类型所决定。李兴华一书的原句】
可用extends 和 super 关键字分别来 指定 上限 和下限 类型。
Pair 是返回值。
minmax 参数名
T[] a 形式参数列表
以下大多摘自《Java编程思想(第四版)》
到目前为止,我们看到的泛型,都是应用于整个类上。但同样可以在类中包含参数化方法,而这个方法所在的类可以是泛型类,也可以不是泛型类。也就是说,是否拥有泛型方法,与其所在的类是否是泛型没有关系。
泛型方法使得该方法能够独立于类而产生变化。以下是一个基本的指导原则:无论何时,只要你能做到,你就应该尽量使用泛型方法。也就是说,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法,因为它可以使事情更清楚明白。另外,对于一个static的方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力,就必须使其成为泛型方法。