【发布时间】:2017-12-13 14:42:50
【问题描述】:
如何在我的源代码中保存案例类?
背景:
我应该为我写的映射器写一个测试。然而,我的映射器得到了一个案例类,其中包含另一个案例类的数百个对象的列表作为其属性之一。
我的方法:
我会向它添加 Serializable Decorator,因为我在此处阅读了它的描述:https://alvinalexander.com/scala/how-to-use-serialization-in-scala-serializable-trait
我的问题:
我无权访问案例类源。它在我导入的另一个文件中。
第二种方法:
我尝试在类上使用 unapply,我得到一个很长的选项字符串(大约 23000 个字符)。
问题,我不能把它转回一个类,主要是因为作为一个写下来的字符串,它在字符串周围没有引号。
有没有更好的方法?因为如果没有任何帮助,我将需要编写自己的可以序列化的类,接受一个字符串并将其映射回原始案例类。但由于我对 Scala 还很陌生,所以我希望这太过分了,Scala 对此有一个简单的预构建解决方案。
编辑: 哦,是的,我不能只是添加更多的依赖项,因为它不是我的项目。因此,我正在寻找一个标准功能。 (我现在正在研究“myOwnCaseClass”方法。看起来它可能比我上面预期的要少。但我们会看到。
【问题讨论】:
-
您可以尝试使用 json4s 之类的东西将其编写为 json。
-
哦,是的,我忘了提。我不能只添加依赖项。仅限标准库。这是我实习中的一个项目。我会用这些信息更新我的问题。
-
你想序列化一些特定的案例类吗?还是您需要处理一般情况?在一般情况下,您可以序列化并非所有类。想象一下,如果您的班级有一个
Thread类型的字段。怎么可以序列化?使用一些标准的序列化库,例如带有外部配置(json4s、circe、play-json)的 JSON 序列化可能是一个好主意。或者,您可以根据这些库中的想法推出自定义序列化。 -
case classes 本质上是Serializable(只要它的内容是)。 Java 序列化格式可以接受吗? -
@stefanobaghino 我必须添加装饰器,不是吗?因此我面临同样的问题。
标签: scala case-class