Java泛型总结(二)

类型变量的限定
一个场景,
class MyClass {
     public static <T> T get(T[] a){
          ……
          a[0].compareTo(.... // 数组a的元素调用compareTo方法进行比较
          ……
     }
}
问题出现在这里,我们没办法保证T类型拥有方法compareTo;
但是,我们有一个办法解决,那就是让T实现Comparable接口。
现在,根据现有的api,我们可以使用T extends Comparable来达到限定的目的。
这时候,有了这样的形式:
<T extends Bounding Type>,表示T应该是绑定类型(Bounding Type)的子类型。T和绑定类型可以是类或者接口。
当然,可以有多个限定类型,例如:
T extends Comparable & Serializable 用&符号分隔开

class  MyArray {
     public  static  <T  extends  Comparable> T min(T[] array) {
        T min = array[0];
         for  (T element : array) {
             if  (min.compareTo(element) > 0) {
                min = element;
            }
        }
         return  min;
    }
}

因为有 extends  Comparable的缘故,这里数组的元素就能够调用 compareTo方法,不会产生编译错误。

你可能感兴趣的:(java泛型)