欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中extends一定是代表繼承嗎?

 更新時(shí)間:2019年01月16日 14:22:36   作者:Haozz_1994  
今天小編就為大家分享一篇關(guān)于Java中extends一定是代表繼承嗎?,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

Java中繼承用哪個(gè)關(guān)鍵字表示?extends!沒(méi)錯(cuò),這是Java小學(xué)生都知道的常識(shí)??墒莈xtends有沒(méi)有別的含義呢?它在任何情況下都一定代表繼承嗎?不一定。

我們知道Collections類有靜態(tài)方法sort,用于List的排序,該方法要求List中的元素類必須實(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,可是這里寫的是“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ù)類型的上界:參數(shù)類型必須是T或T的子類型
  • <? super T>限定參數(shù)類型的下界:參數(shù)類型必須是T或T的超類型

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

最新評(píng)論