Java中extends一定是代表繼承嗎?
Java中繼承用哪個關鍵字表示?extends!沒錯,這是Java小學生都知道的常識??墒莈xtends有沒有別的含義呢?它在任何情況下都一定代表繼承嗎?不一定。
我們知道Collections類有靜態(tài)方法sort,用于List的排序,該方法要求List中的元素類必須實現(xiàn)Comparable接口。我們來看看源碼:
...
@SuppressWarnings("unchecked")
public static <T extends Comparable<? super T>> void sort(List<T> list) {
list.sort(null);
}
...
顯然,該方法的入?yún)⑹且粋€List,List的泛型為T,可是這里寫的是“T extends Comparable”(后面的“<? super T>”我們暫時不考慮),按照以往的思維,也就是說T這個class必須繼承自Comparable。這和我們所熟知的Collections.sort()是有出入的。所以我們必須熟悉這樣一個概念:
- 在Java的泛型中,extends關鍵字表示“繼承或?qū)崿F(xiàn)”。
也就是說,泛型的extends表示“是一個”的含義。那么為什么Java不新建一個“is”關鍵字表示這樣的含義呢?要知道新增一個關鍵字的代價是很大的。
我們再來看一下泛型中的extends和super的區(qū)別:
- <? extends T>限定參數(shù)類型的上界:參數(shù)類型必須是T或T的子類型
- <? super T>限定參數(shù)類型的下界:參數(shù)類型必須是T或T的超類型
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
相關文章
用Eclipse 創(chuàng)建一個簡單的web項目(圖文教程)
下面小編就為大家?guī)硪黄肊clipse 創(chuàng)建一個簡單的web項目(圖文教程)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
SpringBoot自定義maven-plugin插件整合asm代碼插樁
本文主要介紹了SpringBoot自定義maven-plugin插件整合asm代碼插樁,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Java中保證多線程間的數(shù)據(jù)共享的方法詳解
這篇文章詳解的發(fā)給大家介紹了Java中是如何保證多線程間的數(shù)據(jù)共享的,文中通過圖文介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2023-11-11
詳解SpringBoot中添加@ResponseBody注解會發(fā)生什么
這篇文章主要介紹了詳解SpringBoot中添加@ResponseBody注解會發(fā)生什么,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
eclipse創(chuàng)建java項目并運行的詳細教程講解
eclipse是java開發(fā)的ide工具,是大部分java開發(fā)人員的首選開發(fā)工具,可是對于一些新Java人員來說,不清楚eclipse怎么運行項目?這篇文章主要給大家介紹了關于eclipse創(chuàng)建java項目并運行的相關資料,需要的朋友可以參考下2023-04-04

