【发布时间】:2018-04-16 18:17:42
【问题描述】:
我有一个参数化的泛型类型,其中泛型类型来自我单独定义的 Case 类。
这些是
case class TypeA(user_id: String,
device_id: String) extends Serializable
case class TypeB(user_id: String,
device_id: String,
org_id: String,
app_name: String) extends Serializable
我使用 Map 函数读取数据集,基于通用类型架构
val res = this.readHandlersMap.map(s => s._1 match {
case "a" => {
(s._1, s._2.read[TypeA]((Encoders.product[TypeA].schema)).asInstanceOf[Dataset[TypeA]])
}
case "b" => {
(s._1, s._2.read[TypeB]((Encoders.product[TypeB].schema)).asInstanceOf[Dataset[TypeB]])
}
});
检查res 的输出后,我知道它是类型
Map[String, Dataset[_ >: TypeA with TypeB <: Serializable with Product]]
我不明白这种类型的含义。 _>: 和 withs 在这种类型中做了什么?当我尝试将res 声明为Dataset[Serializable] 类型时,我得到一个错误。如果我添加TypeC,这个类型会是什么?
【问题讨论】: