文档

Java™ 教程-Java Tutorials 中文版
泛型方法和有界类型形参
Trail: Learning the Java Language
Lesson: Generics (Updated)
Section: Bounded Type Parameters

泛型方法和有界类型形参

有界类型形参是泛型算法实现的关键。请考虑以下方法,该方法计算数组 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;
}

该方法的实现很简单,但它不能编译,因为大于运算符(>)仅适用于基本类型,如 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;
}

Previous page: Bounded Type Parameters
Next page: Generics, Inheritance, and Subtypes