1

我正在构建一个 JSON 序列化工具,我希望能够在 Scala 中的类上定义自定义序列化和反序列化方法。但不幸的是,由于 Scala 没有静态方法,我还没有找到一种表达该方法的好fromJSON方法。

我想写的是:

class Foo(val x: Int) extends Serializable {
  def toJSON = JInteger(x)
  static val fromJSON: PartialFunction[JValue, Foo] = {
    JInteger(x) => new Foo(x)
  }
}

...但static 不存在。我可以在伴生对象中编写静态方法:

object Foo {
  val fromJSON: PartialFunction[JValue, Foo] = {
    JInteger(x) => new Foo(x)
  }
}
class Foo(val x: Int) extends Serializable {
  def toJSON = JInteger(x)
}

但是编译器不会检查它在每个Serializable类中的存在,如果不小心没有定义它,错误可能会在运行时蔓延。

我是 Scala 的新手——有什么好的方法来表达这一点?我想在它们所代表的类中或附近编写我的序列化/反序列化方法。

4

0 回答 0