Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
有界类型形参是泛型算法实现的关键。请考虑以下方法,该方法计算数组 T[] 中大于指定元素 elem 的元素数。
public static <T> int countGreaterThan(T[] anArray, T elem) { int count = 0; for (T e : anArray) if (e > elem) // compiler error ++count; return count; }
该方法的实现很简单,但它不能编译,因为大于运算符(>)仅适用于基本类型,如 short,int,double,long,float,byte 和 char。你不能使用 > 运算符来比较对象。要解决此问题,请使用由 Comparable<T> 接口限定的类型形参:
public interface Comparable<T> { public int compareTo(T o); }
生成的代码将是:
public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) { int count = 0; for (T e : anArray) if (e.compareTo(elem) > 0) ++count; return count; }