第81讲:Scala中List的构造和类型约束逆变、协变、下界详解

时间:2021-10-11 23:00:03

今天来学习一下scala中List的构造和类型约束等内容。

让我们来看一下代码

package scala.learn

/**
 * @author zhang
 */
abstract class Big_Data

class Hadoop extends Big_Data
class Spark extends Big_Data

object List_Constructor {
  def main(args:Array[String]){
    val hadoop = new Hadoop :: Nil //最后的List类型为Hadoop
    val big_Data = new Spark :: hadoop//最后的List类型为Big_Data,提升为父类型
  }
}

我们上一讲说过,Nil是Nothing类型,它可以与List所有类型相通,所以,hadoop最后是一个Hadoop类型的List。

而new Spark是Spark类型,同时是Big_Data的子类型 ,hadoop是Hadoop类型,也是Big_Data的子类型,那么big_Data最后形成的列表,如果可以容纳两种不同的子类型 的话,那么就会变成它们共同的上界,也就是父型型:Big_Data。

List的这种机制,对于列表的自身延伸是非常有好处的。

分享下更多的scala资源吧:

百度云盘:http://pan.baidu.com/s/1gd7133t

微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416

360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark

关注微信账号,获取更多关于scala学习内容