2017-03-01 28 views
1

我想使用酸洗序列化一個Scala類。使用酸洗在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 

我正在上編譯此錯誤:

Error:..... type arguments [_$2] do not conform to trait Tr's type parameter bounds [T <: Tr[T]] val message = new Data(new Sub(1)).pickle.value

+0

這是有效的:class Data [T <:Tr [T]](val b:Tr [T])' – mfirry

回答

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