Java中extends一定是代表繼承嗎?
Java中繼承用哪個關(guān)鍵字表示?extends!沒錯,這是Java小學(xué)生都知道的常識??墒莈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關(guān)鍵字表示“繼承或?qū)崿F(xiàn)”。
也就是說,泛型的extends表示“是一個”的含義。那么為什么Java不新建一個“is”關(guān)鍵字表示這樣的含義呢?要知道新增一個關(guān)鍵字的代價是很大的。
我們再來看一下泛型中的extends和super的區(qū)別:
- <? extends T>限定參數(shù)類型的上界:參數(shù)類型必須是T或T的子類型
- <? super T>限定參數(shù)類型的下界:參數(shù)類型必須是T或T的超類型
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
常用數(shù)據(jù)庫的驅(qū)動程序及JDBC URL分享
這篇文章主要介紹了常用數(shù)據(jù)庫的驅(qū)動程序及 JDBC URL,需要的朋友可以看下2014-01-01SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務(wù)端
MQTT是一種輕量級的消息傳輸協(xié)議(Message Queuing Telemetry Transport),旨在實現(xiàn)設(shè)備之間的低帶寬和高延遲的通信,本文給大家介紹了SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務(wù)端,需要的朋友可以參考下2024-04-04java datetime數(shù)據(jù)類型去掉時分秒的案例詳解
在Java中,如果我們想要表示一個日期而不包括時間(時分秒),我們通常會使用java.time包中的LocalDate類,這篇文章主要介紹了java datetime數(shù)據(jù)類型去掉時分秒,需要的朋友可以參考下2024-06-06解決@Api注解不展示controller內(nèi)容的問題
這篇文章主要介紹了解決@Api注解不展示controller內(nèi)容的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。2022-01-01SpringBoot前后端分離解決跨域問題的3種解決方案總結(jié)
前后端分離大勢所趨,跨域問題更是老生常談,下面這篇文章主要給大家介紹了SpringBoot前后端分離解決跨域問題的3種解決方案,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05Java實現(xiàn)儲存對象并按對象某屬性排序的幾種方法示例
這篇文章主要介紹了Java實現(xiàn)儲存對象并按對象某屬性排序的幾種方法,結(jié)合實例形式詳細(xì)分析了Java儲存對象并按對象某屬性排序的具體實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2020-05-05