Java泛型方法

package PairTestMyCode.copy; import java.util.*; public class PairTest2 { public static void main(String[] args) { GregorianCalendar[] birthdays = { new GregorianCalendar(1906, Calendar.DECEMBER, 9), // G. Hopper new GregorianCalendar(1815, Calendar.DECEMBER, 10), // A. Lovelace new GregorianCalendar(1903, Calendar.DECEMBER, 3), // J. von Neumann new GregorianCalendar(1910, Calendar.JUNE, 22), // K. Zuse }; Pair<GregorianCalendar> mm = ArrayAlg.minmax(birthdays); System.out.println("min = " + mm.getFirst().getTime()); System.out.println("max = " + mm.getSecond().getTime()); } } class ArrayAlg { /** Gets the minimum and maximum of an array of objects of type T. @param a an array of objects of type T @return a pair with the min and max value, or null if a is null or empty */ public static <T extends Comparable> Pair<T> minmax(T[] a) { if (a == null || a.length == 0) return null; T min = a[0]; T max = a[0]; for (int i = 1; i < a.length; i++) { if (min.compareTo(a[i]) > 0) min = a[i]; if (max.compareTo(a[i]) < 0) max = a[i]; } return new Pair<T>(min, max); } } class Pair<T> { private T first; private T second; public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second = second; } public T getFirst() { return first; } public T getSecond() { return second; } public void setFirst(T newValue) { first = newValue; } public void setSecond(T newValue) { second = newValue; } }

 

 其中第30行代码是public static <T extends Comparable> Pair<T> minmax(T[] a) { if (a == null || a.length == 0) return null; T min = a[0]; T max = a[0]; for (int i = 1; i < a.length; i++) { if (min.compareTo(a[i]) > 0) min = a[i]; if (max.compareTo(a[i]) < 0) max = a[i]; } return new Pair<T>(min, max); }

 

看了半天都看不懂public static <T extends Comparable> Pair<T> minmax(T[] a)

这段代码来源于Java2核心技术 第7版  第1卷 P665页,虽然这部书是经典图书,但是这个地方写得真得不好。

看了很长时间都没有看懂,去新华书店翻开了 李兴华的《Java开发实战经典》和李刚《疯狂Java讲义》两本书的

相关部分后,终于弄懂了。看来有时候一段复杂的技术代码刚刚接触的时候,无法弄懂不一定是自己笨,而是很可能是

作者的原因。

泛型方法的语法

[访问权限修饰符] [static] [final] <类型参数列表> 返回值类型 方法名([形式参数列表])

 

[]表示为可选的。

 

 public static <T extends Comparable> Pair<T> minmax(T[] a)

<T extends Comparable> 是指 类型参数列表,安装李兴华一书的原话来说T是个未知的类型,由调用它(指泛型方法本身)的具体参数来决定的类型。【方法中传入或返回的泛型类型由调用方法时所设置的参数类型所决定。李兴华一书的原句】

可用extends  和 super 关键字分别来 指定  上限 和下限 类型。

 

Pair<T> 是返回值。

 

minmax 参数名

 

T[] a 形式参数列表

 

 

 

你可能感兴趣的:(java,String,null,Class,pair)