2017-03-01 4 views
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 

나는 컴파일에이 오류를 얻고있다 :

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