Scala 中的特殊符號 ---- 泛型邊界 <: >:

泛型的邊界 <:>:

符號 <:>:都是用來表示泛型的邊界,如:
有以下類聲明:

class Animal
class Dog extends Animal
class ErHa extends Dog

聲明擁有泛型的類:

class MyList[V <: Dog] 

說明: 泛型 V 必須是 Dog 類或者是 Dog 類的子類,即泛型的上邊界為 Dog 類

class MyList2[V >: Dog]

說明: 泛型 V 必須是 Dog 類或者是 Dog 類的父類,即泛型的下邊界為 Dog 類

示例代碼

class Animal
    class Dog extends Animal
    class ErHa extends Dog

    class MyList[V <: Dog] // 泛型 V 是 Dog 或者是 Dog 的子類
    class MyList2[V >: Dog] // 泛型 V 是 Dog 或者是 Dog 的父類

    def main(args: Array[String]): Unit = {

        val m1: MyList[Animal] = new MyList[Animal]() // Animal 是 Dog 的父類,出錯
        val m2: MyList[Dog] = new MyList[Dog]()
        val m3: MyList[ErHa] = new MyList[ErHa]()

        val m4: MyList2[Animal] = new MyList2[Animal]()
        val m5: MyList2[Dog] = new MyList2[Dog]()
        val m6: MyList2[ErHa] = new MyList2[ErHa]() // ErHa 是 Dog 的子類,出錯

    }

說明: 此例中泛型聲明都是 不變 的,所以聲明和賦值時類型要一致

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容