Sto cercando di ottenere un esempio di upickle di base per funzionare e sembra che manchi qualcosa qui. Voglio provare l'esempio fornito in the readme page for upickleuPickle e ScalaJS: serializzazione dei tratti sigillati
import upickle._
sealed trait A
@key("Bee") case class B(i: Int) extends A
case object C extends A
Poi, il mio codice è:
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)
}
}
Tutto quello che ottiene è l'errore:
The referenced trait [[A]] does not have any sub-classes. This may happen due to a limitation of scalac (SI-7046) given that the trait is not in the same package. If this is the case, the hierarchy may be defined using integer constants.
ho due domande:
- Come posso convincere uPickle tha il tratto è nello stesso pacchetto? (Perché lo è.)
- O se non posso: come posso definire la gerarchia con le costanti integer?
Il mio codice funzionava bene fino a quando ho rinominato il pacchetto in cui si trovavano le mie trait/sottoclassi. Per qualche motivo, devono essere stati compilati in un ordine diverso. Mi stavo seriamente grattando la testa. Grazie per questo. –