java中繼承用哪個關鍵字表示?extends!沒錯,這是java小學生都知道的常識。可是extends有沒有別的含義呢?它在任何情況下都一定代表繼承嗎?不一定。
我們知道collections類有靜態方法sort,用于list的排序,該方法要求list中的元素類必須實現comparable接口。我們來看看源碼:
1
2
3
4
5
6
|
... @suppresswarnings ( "unchecked" ) public static <t extends comparable<? super t>> void sort(list<t> list) { list.sort( null ); } ... |
顯然,該方法的入參是一個list,list的泛型為t,可是這里寫的是“t extends comparable”(后面的“<? super t>”我們暫時不考慮),按照以往的思維,也就是說t這個class必須繼承自comparable。這和我們所熟知的collections.sort()是有出入的。所以我們必須熟悉這樣一個概念:
- 在java的泛型中,extends關鍵字表示“繼承或實現”。
也就是說,泛型的extends表示“是一個”的含義。那么為什么java不新建一個“is”關鍵字表示這樣的含義呢?要知道新增一個關鍵字的代價是很大的。
我們再來看一下泛型中的extends和super的區別:
- <? extends t>限定參數類型的上界:參數類型必須是t或t的子類型
- <? super t>限定參數類型的下界:參數類型必須是t或t的超類型
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/hz_940611/article/details/81094119