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

