文档

Java™ 教程
隐藏目录
泛型方法和有界类型参数
路径:学习Java语言
课程:泛型 (更新)
章节:有界类型参数

泛型方法和有界类型参数

有界类型参数是实现泛型算法的关键。考虑下面这个方法,它计算数组 T[] 中大于指定元素 elem 的元素数量。

public static <T> int countGreaterThan(T[] anArray, T elem) {
    int count = 0;
    for (T e : anArray)
        if (e > elem)  // 编译错误
            ++count;
    return count;
}

方法的实现很简单,但它无法编译,因为大于运算符 (>) 只适用于原始类型,如 shortintdoublelongfloatbytechar。你不能使用 > 运算符来比较对象。为了解决这个问题,使用一个由 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;
}

上一页: 有界类型参数
下一页: 泛型、继承和子类型