首页 文章

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

提问于
浏览
1

我正在尝试使用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的类型参数bounds [T <:Tr [T]] val message = new Data(new Sub(1)) . pickle.value

1 回答

  • 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
      }
    }
    

相关问题