布尔值不是可序列化的?
Boolean is not Serializable?
考虑这个小片段:
scala> val u = true.asInstanceOf[Serializable]
java.lang.ClassCastException: java.lang.Boolean cannot be cast to scala.Serializable
嗯,这有点令人惊讶。动机是支持适度范围的 类 - 原始和自定义 类(do 显式`扩展可序列化)。
那么如何处理这些图元的自动序列化呢?
您可以使用 ObjectOutputStream
/ObjectInputStream
到 serialize/deserialize 个对象:
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()
}
那些流 classes 是 Java(不是 Scala)二进制序列化框架的一部分。因此,class 将 java.io.Serializable
扩展为可序列化就足够了。 boolean
原语被认为是java.io.Serializable
:
true.isInstanceOf[scala.Serializable] // false
true.isInstanceOf[java.io.Serializable] // true
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 之间存在某种跨平台序列化。
考虑这个小片段:
scala> val u = true.asInstanceOf[Serializable]
java.lang.ClassCastException: java.lang.Boolean cannot be cast to scala.Serializable
嗯,这有点令人惊讶。动机是支持适度范围的 类 - 原始和自定义 类(do 显式`扩展可序列化)。
那么如何处理这些图元的自动序列化呢?
您可以使用 ObjectOutputStream
/ObjectInputStream
到 serialize/deserialize 个对象:
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()
}
那些流 classes 是 Java(不是 Scala)二进制序列化框架的一部分。因此,class 将 java.io.Serializable
扩展为可序列化就足够了。 boolean
原语被认为是java.io.Serializable
:
true.isInstanceOf[scala.Serializable] // false
true.isInstanceOf[java.io.Serializable] // true
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 之间存在某种跨平台序列化。