1四、Scala類型參數

一、泛型類數組

二、泛型函數函數

三、上邊界Boundsspa

四、下邊界Boundsscala

五、View Boundsblog

六、Context Bounds繼承

七、Manifest Context Boundsio

八、協變和逆變泛型

一、泛型類

  泛型類,是在類的聲明中,定義一些泛型類型,而後在類內部,好比field或者method,就可使用這些泛型類型。變量

  使用泛型類,一般是須要對類中的某些成員,進行統一的類型限制,這樣能夠保證程序更好的健壯性和穩定性。程序

  若是不使用泛型進行限制,在後期程序運行過程當中,可能傳入不但願的類型,致使程序出問題。

  

二、泛型函數

  與泛型類相似,能夠給某個函數在聲明時指定泛型類型,而後在函數體內,多個變量或者返回值之間,就可使用泛型類型進行聲明,從而對某個特殊的變量或多個變量,進行強制性的類型限制。

  

三、上邊界Bounds

  在指定泛型類型的時候,有時咱們須要指定泛型類型的範圍。好比,咱們可能要求某個泛型類型,必須是某個類的子類,在程序中就能夠放心的調用泛型類型繼承父類的方法,程序才能正常使用和運行。(注意:後面的空格)

  

四、下邊界Bounds

  除了指定上邊界,還能夠指定下邊界,即指定泛型類型必須是某個類的父類。

  

五、View Bounds

  上下邊界Bounds,雖然可讓一種泛型類型,支持有父子關係的多種類型。可是,在某個類與上下邊界Bounds指定的父子類型範圍內的類都沒有任何關係,則默認是確定不能接受的。

  View Bounds做爲一種上下邊界Bounds的增強版,支持能夠對類型進行隱式轉換,對指定的類型進行隱式轉換後,再判斷是否在邊界指定的類型範圍內。

  

六、Context Bounds

  Context Bounds是一種特殊的Bounds,它根據泛型類型的聲明,好比"T:類型"要求必須存在一個類型爲」類型[T]"的隱式值。Context Bounds之因此叫Context,由於它基於一種全局的上下文,須要使用到上下文中的隱式值以及注入。

  

七、Manifest Context Bounds

  scala中,要實例化一個泛型數組,就必須使用Manifest Context Bounds。就是說,若是數組元素類型爲T的話,須要爲類或者函數定義[T:Manifest]泛型類型,這樣才能實例化Array[T]這種泛型數組。

  

八、協變和逆變

  Java中,若是a是b的子類,card[a]不能夠是card[b]的子類,可是scala中,靈活的使用協變和逆變,輕鬆解決了這種問題。

  

  

相關文章
相關標籤/搜索