加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用@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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读