在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ 類型下界
信息隱藏
類型上界
Variance(類型變體)標(biāo)識(shí)
概述和例子說明
類型下界

類型下界

我們還是使用前面的 Queue 的例子,我們知道,我們不能使用+T(協(xié)變關(guān)系)來定義 Queue,然而,我們可以通過給 equeue 方法本身提供一個(gè)類型參數(shù)使之一般化。

class Queue[+T] ( private val leading: List[T],
    private val trailing: List[T] {
    def enqueue[U >: T ](x: U) =
        new Queue[U](leading, x:: trailing)
}

在這個(gè)新定義中,使用了一個(gè)新的類型參數(shù) U, 語法結(jié)構(gòu) U >: T ,定義 T 為 U 的下界,因此U必須是 T 的一個(gè)父類。 enqueue 的返回類型也變成 Queue[U],而不是之前的 enqueue[T]。

舉例來說,比如說一個(gè) Fruit 類定義了兩個(gè)子類 Apple 和 Orange, 使用這個(gè)新的 enqueue 定義,可以把一個(gè) Orange 對(duì)象添加到一個(gè) Queue[Apple]隊(duì)列中,其返回結(jié)果為一 個(gè)Queue[Fruit]類型。