我正在尝试让一个基本的 upickle 示例起作用,似乎我在这里遗漏了一些东西。我想试试upickle 自述页面上提供的示例
import upickle._
sealed trait A
@key("Bee") case class B(i: Int) extends A
case object C extends A
然后,我的代码是:
object Model {
def main(args: Array[String]): Unit = {
val a = B(5): A
println(a)
val out = write(a)
println(out)
val a2 = read[A](out)
println(a2)
println(a == a2)
}
}
我得到的只是错误:
引用的特征 [[A]] 没有任何子类。这可能是由于 scalac (SI-7046) 的限制而发生的,因为该特征不在同一个包中。如果是这种情况,则可以使用整数常量来定义层次结构。
我有两个问题:
- 如何让 uPickle 相信该特征在同一个包中?(因为它是。)
- 或者如果我不能:如何使用整数常量定义层次结构?