如何使用@serializable scala对象?
发布时间:2020-12-16 09:12:34 所属栏目:安全 来源:网络整理
导读:我知道你可以将 Scala对象标记为@serializable,但是我不明白该对象后面会怎么做.我只是把它当作一个 Java可序列化的对象? 我想将对象序列化成一个字节流.有人可以向我显示代码,将序列化对象转换为字节数组还是字符串? (谷歌对这个问题没有帮助) 关注:谢谢
我知道你可以将
Scala对象标记为@serializable,但是我不明白该对象后面会怎么做.我只是把它当作一个
Java可序列化的对象?
我想将对象序列化成一个字节流.有人可以向我显示代码,将序列化对象转换为字节数组还是字符串? (谷歌对这个问题没有帮助) 关注:谢谢.我现在明白,我可以像Java Serializable对象一样使用它.有时明显的回答让我失望. 解决方法
回答您的第一个问题:是的,您可以将其视为Java Serializable对象:
scala> @serializable object A defined module A scala> import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream scala> import java.io.ObjectOutputStream; import java.io.ObjectOutputStream scala> val baos = new ByteArrayOutputStream(1024) baos: java.io.ByteArrayOutputStream = scala> val o = new ObjectOutputStream(baos) o: java.io.ObjectOutputStream = java.io.ObjectOutputStream@3d689405 scala> o.writeObject(A) scala> baos.toByteArray res4: Array[Byte] = Array(-84,-19,5,115,114,24,108,105,110,101,49,51,36,111,98,106,99,116,119,65,-104,-28,-53,-123,-97,-118,-36,2,120,112) scala> object B defined module B scala> o.writeObject(B) java.io.NotSerializableException: B$ at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) at .(:13) at .() at RequestResult$.(:9) at RequestResult$.() at RequestResult$scala_repl_result() at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$18.apply(Interpreter.scala:981) at scala.tools.nsc.Interpreter$Request$... 如果你想序列化一些字符串格式,也许this library可能是有用的,它将scala对象序列化成JSON. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |