Scala List中的上界下界以及逆变、协变


package com.dt.scala.list

abstract class Big_Data
class Hadoop extends Big_Data
class Spark extends Big_Data

object List_Constructor_Internals {
  def main(args: Array[String]): Unit = {
    val hadoop = new Hadoop :: Nil    //创建hadoop列表
    val big_data = new Spark :: hadoop   //在hadoop列表前边追加Spark,然而Spark和Hadoop本身类型不同,他们的父类类型相同
    //此时得到的新列表big_data 类型是Big_Data;
//    也可以写成:     hadoop.::(new Spark)
  }
  // :: 操作的源码定义:
//  def ::[B >: A](x: B) : List[B] = new scala.collection.immutable.::(x,this)
  //是泛型,A是以B为上界的,或者说B是以A为下界的。返回是上界B,list是协变的,函数的参数(x:B)其实是逆变的。
  //函数的参数时逆变的,就不能保持函数的返回结果类型是协变的了。使得list可以容纳具体的上界的所有子类型。
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值