範型強化之extends與super
1、背景,本來範型類掌握的就很low,結果怕什麼來什麼
2、問題:<E>與<E extends Comparable<E>>有什麼區別?
答:好吧,本來範型的目的就是代指,E可以是任意型別的物件,但是這時候加了一個E extends Comparable,明顯對E做了限制,什麼限制呢?
E extends Comparable的意思是:E必須為擴充套件Comparable的子類物件,或者E為Comparable的實現類,很明顯這裡extends是代指了類和介面,統一用了extends
細分一下
<>這裡裡面就是範型引數,<<>>裡面的裡面,其實代表範型引數也是有範型引數而已,比如 <E extends Comparable<E>>,此時第一個E是當前類用的範型引數, 而後面的 Comparable<E> 這個裡面的E,代表的是Comparable也是個範型類或者範型介面
比較坑啊,這裡,尼瑪,每個幾年,沒人告訴你
那麼包含Comparable本身如果作為類的物件,當然是包括自己了,以及Comparable的擴充套件類
3、問題 :<E> 與 <E super Comparable<E>>有什麼區別?
答:好吧,困的哥哥,都快睡著了,<E> 這裡指E可以是任意型別的物件,而<E super Comparable<E>> 代表,E只能Comparable,或者Comparable的父類,這裡也一樣統一了用了super,其實Comparable在例子中有可能是類,也有可能是介面
4、無論extends 還是 super 同樣對E作了限制,extends是上限,super是下限,這跟類或者介面的繼承體系有關,畢竟是從上向下嘛
比如 Dog,extends Dog,Dog在最上方,所有Dog的子類都下方,所以為上限