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中,灵活的使用协变和逆变,轻松解决了这种问题。

  

  

相关文章
相关标签/搜索