考虑这个小小的片段:
redis = Redis.new(:url => uri)
redis.psubscribe
这有点令人惊讶..动机是支持一系列适度的类 - 基元和自定义类(做显式`扩展Serializable)。
那么处理这些原语的自动序列化的方法是什么?
答案 0 :(得分:7)
java.lang.Boolean 不是 scala.Serializable 。但是 java.io.Serializable :
scala> val u = true.asInstanceOf[java.io.Serializable]
u: java.io.Serializable = true
有关 scala.Serializable 的信息,请参阅http://www.scala-lang.org/api/2.11.8/#scala.Serializable,这似乎表明JVM和.NET之间存在某种跨平台序列化。
答案 1 :(得分:1)
您可以使用ObjectOutputStream
/ ObjectInputStream
来序列化/反序列化对象:
import java.io.{ObjectOutputStream, FileOutputStream, ObjectInputStream, FileInputStream}
object Test extends App {
val oos = new ObjectOutputStream(new FileOutputStream("bool.obj"))
oos.writeObject(true)
oos.close()
val ois = new ObjectInputStream(new FileInputStream("bool.obj"))
val obj = ois.readObject()
println(obj) // Prints: true
ois.close()
}
这些流类是Java(而不是Scala)二进制序列化框架的一部分。因此,类可以将java.io.Serializable
扩展为可序列化。 boolean
原语被视为java.io.Serializable
:
true.isInstanceOf[scala.Serializable] // false
true.isInstanceOf[java.io.Serializable] // true