国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java? 教程(泛型、繼承和子類型)

AaronYuan / 1740人閱讀

泛型、繼承和子類型

如你所知,只要類型兼容,就可以將一種類型的對象分配給另一種類型的對象,例如,你可以將Integer分配給Object,因為ObjectInteger的超類型之一:

Object someObject = new Object();
Integer someInteger = new Integer(10);
someObject = someInteger;   // OK

在面向對象的術語中,這被稱為“是一種”關系,由于Integer是一種Object,因此允許賦值,但是Integer也是一種Number,所以下面的代碼也是有效的:

public void someMethod(Number n) { /* ... */ }

someMethod(new Integer(10));   // OK
someMethod(new Double(10.1));   // OK

泛型也是如此,您可以執行泛型類型調用,將Number作為其類型參數傳遞,如果參數與Number兼容,則允許任何后續的add調用:

Box box = new Box();
box.add(new Integer(10));   // OK
box.add(new Double(10.1));  // OK

現在考慮以下方法:

public void boxTest(Box n) { /* ... */ }

它接受什么類型的參數?通過查看其簽名,你可以看到它接受一個類型為Box的參數,但是,這是什么意思?你是否可以按照預期傳遞BoxBox?答案是“否”,因為BoxBox不是Box的子類型。

在使用泛型編程時,這是一個常見的誤解,但這是一個重要的學習概念。

給定兩個具體類型AB(例如,NumberInteger),MyClassMyClass無關,無論AB是否相關,MyClassMyClass的公共父級是Object。

有關如何在類型參數相關時在兩個泛型類之間創建類似子類型關系的信息,請參閱通配符和子類型。

泛型類和子類型

你可以通過擴展或實現泛型類或接口來對其進行子類型化,一個類或接口的類型參數與另一個類或接口的類型參數之間的關系由extendsimplements子句確定。

使用Collections類作為示例,ArrayList implements List,List extends Collection,因此ArrayListList的子類型,也是Collection的子類型,只要不改變類型參數,就會在類型之間保留子類型關系。

現在假設我們想要定義我們自己的列表接口PayloadList,它將泛型類型P的可選值與每個元素相關聯,它的聲明可能如下:

interface PayloadList extends List {
  void setPayload(int index, P val);
  ...
}

PayloadList的以下參數化是List的子類型:

PayloadList

PayloadList

PayloadList

上一篇:有界類型參數 下一篇:類型推斷

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72920.html

相關文章

  • Java? 教程(目錄)

    Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續版本中引入的改進。 Java教程是希望使用Java編程語言創建應用程序的程序員的實用指南,其中包括數百個完整的工作示例和數十個課程,相關課程組被組織成教程。 覆蓋基礎知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術和安裝Java開發軟件并使用...

    lifesimple 評論0 收藏0
  • Java 泛型之上界下界通配符

    摘要:泛型之上界下界通配符本教程是為編寫的。這是在使用泛型編程時一個常見的誤解,也是一個需要學習的重要概念。通配符使用指南學習使用泛型編程時,更令人困惑的一個方面是確定何時使用上限有界通配符以及何時使用下限有界通配符。 Java 泛型之上界下界通配符 本Java教程是為JDK 8編寫的。本頁描述的示例和實踐沒有利用后續版本中引入的改進。 泛型,繼承和子類 如你所知,只要類型兼容,就可以將一種...

    shiyang6017 評論0 收藏0
  • Java? 教程類型推斷)

    類型推斷 類型推斷是Java編譯器查看每個方法調用和相應聲明的能力,以確定使調用適用的類型參數,推理算法確定參數的類型,如果可用,還確定分配或返回結果的類型,最后,推理算法嘗試查找適用于所有參數的最具體類型。 為了說明最后一點,在下面的示例中,推斷確定傳遞給pick方法的第二個參數是Serializable類型: static T pick(T a1, T a2) { return a2; } ...

    JerryC 評論0 收藏0
  • Java? 教程(有界類型參數)

    有界類型參數 有時你可能希望限制可用作參數化類型中的類型參數的類型,例如,對數字進行操作的方法可能只想接受Number或其子類的實例,這是有界類型參數的用途。 要聲明有界類型參數,請列出類型參數的名稱,然后是extends關鍵字,后跟其上限,在此示例中為Number,請注意,在此上下文中,extends在一般意義上用于表示extends(如在類中)或implements(如在接口中)。 publi...

    spacewander 評論0 收藏0
  • 【從基礎學 Java泛型

    摘要:泛型方法泛型類中可以定義靜態非靜態的泛型方法。上述泛型類會被替換成下面形式一般使用第一個限定類型替換變為原始類型,沒有限定類型,使用替換。 引言 在面向對象的世界里,我們如果需要一個容器來盛裝對象。舉個例子:一個籃子。我們可以用這個籃子裝蘋果,也可以用這個籃子裝香蕉。基于 OOP 的思想,我們不希望為蘋果和香蕉分別創建不同的籃子;同時,我們希望放進籃子里的是蘋果,拿出來的還是蘋果。于是...

    huhud 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<