我正在构建一个 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 的新手——有什么好的方法来表达这一点?我想在它们所代表的类中或附近编写我的序列化/反序列化方法。