是否可以在Scala中使用Typeclasses创建第三方类java.io.Serializable?

时间:2014-03-28 16:12:38

标签: scala jodatime typeclass

我想在Scala中为org.joda.time.format.DateTimeFormat实现java.io.Serializable。是否可以使用Typeclasses实现这一目标

2 个答案:

答案 0 :(得分:3)

我认为这是可能的,因为:

为了序列化对象,您需要知道对象的整个状态,以便在反序列化中重建状态。你想如何得到DateTimeFormat - 极其复杂的状态?没有可用于此目的的公共API。

我建议:不要序列化格式对象,将它存储在静态常量中就足够了,因为它是不可变的。这完全涵盖了双方 - 提供者和消费者 - 使用相同格式的用例。如果你真的需要动态发送格式对象,你可以发送格式模式字符串(在大多数情况下它们足够强大)并在反序列化中使用它们来构造接收器上的格式对象。

答案 1 :(得分:2)

java.io.Serializable的设计并不适合这种情况。还有其他选择,例如https://github.com/scala/pickling。但是,正如Meno Hochshild所提到的,它们可能不适用于DateTimeFormat