1. 程式人生 > >範型強化之extends與super

範型強化之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的子類都下方,所以為上限