使用酸洗在Scala上使用特征序列化类时出错?

时间:2017-03-01 09:17:16

标签: scala class serialization pickle traits

我正在尝试使用Pickling序列化Scala类。

  import scala.pickling.Defaults._
  import scala.pickling.json._

  trait Tr[T<: Tr[T]]{}
  class Sub(z: Int) extends Tr[Sub] {}
  class Data(b: Tr[_])

  val message = new Data(new Sub(1)).pickle.value

我在编译时收到此错误:

  

错误:.....类型参数[_ $ 2]不符合特质Tr的类型   参数界限[T&lt;:Tr [T]]         val message = new Data(new Sub(1))。pickle.value

1 个答案:

答案 0 :(得分:1)

如何使用以下类层次结构:

trait Tr[T <: Tr[T]]
case class Sub(z: Int) extends Tr[Sub]
case class Data[T <: Tr[T]](b: T)

val message = Data(Sub(1)).pickle.value

像那样腌制:

{
  "$type": "Data[Sub]",
  "b": {
    "z": 1
  }
}