Oct 21, 2017
Java 泛型-泛型边界
在泛型使用过程中,有时候我们希望可以限制类型参数(Type Argument)的类型,这时就会用到泛型边界。使用泛型边界很简单,在定义泛型类型或泛型方法时,使用 extends 关键字即可。
泛型类型边界
声明一个有界的泛型类型,语法类似类的继承,在类型参数后面添加 extends 关键字,extends 后面添加边界。需要注意的是,这里的 extends 有「类的继承」或「接口的实现」之意。
我们看下面一个例子:
1 | public class Box<T> { |
泛型方法边界
有界类型参数是实现通用算法的关键。下面的方法是计算 T[]
数组中大于指定元素 elem 的元素个数。
1 | public static <T> int countGreaterThan(T[] anArray, T elem) { |
上面的方法实现很简单,但是编译不通过,因为 >
运算符只接收基本类型,比如 short、int、double、long、float、byte 和 char。我们不能使用 >
运算符来比较对象。为了解决这个问题,我们可以使用边界为 Comparable<T>
接口的类型参数:
1 | public interface Comparable<T> { |
最终的代码如下:
1 | public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) { |