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可以容纳具体的上界的所有子类型。 }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-06 02:46:06