我想在 Scala 中进行序列化——我见过 sjson 之类的东西和 @serializable 注释——但是,我一直无法看到如何让它们处理 1 个主要障碍——库中的类型删除和泛型。
以 Graph for Scala 为例图书馆。我在我的代码中大量使用它,并希望在我的代码中编写几个将图形保存到磁盘的对象,以供以后分析。但是,很多时候节点和边类型都封装在我拥有的另一个类的泛型类型参数中。如何在不修改库本身以处理反射或通过导入大量 Type Classes 来“弄脏”我的代码的情况下正确序列化这些类(根据如何查看对象的序列化无论如何都完全不令人满意......)?
例子,
class Container[N](val g: Graph[N,DiEdge]) {
...
}
// in another file
def myMethod[N](container: Container[N]): Unit = {
<serialize container somehow here>
}
最佳答案
为了报告我的发现,Java 的 XStream完成了一项非凡的工作——任何东西,无论是泛型还是其他,都可以自动序列化,而无需任何额外的输入。如果您需要一种快速且无需工作的方法来进行序列化,那么 XStream 就是它!
但是,需要注意的是,如果没有您自己的输入,输出的 XML 将不会特别简洁。例如,Scala 的 HashMap 使用的每个内存块都会被记录下来,即使它们中的大多数不包含任何内容!
关于scala - 简单的 Scala 序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8061146/