Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言变更以了解Java SE 9及后续版本中的更新语言特性的摘要。
请参阅JDK发行说明以获取有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
有界类型参数是实现泛型算法的关键。考虑下面这个方法,它计算数组 T[] 中大于指定元素 elem 的元素数量。
public static <T> int countGreaterThan(T[] anArray, T elem) { int count = 0; for (T e : anArray) if (e > elem) // 编译错误 ++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; }