考慮這個小片段:布爾是不是可序列化?
scala> val u = true.asInstanceOf[Serializable]
java.lang.ClassCastException: java.lang.Boolean cannot be cast to scala.Serializable
那麼這是一個有點意外的..的動機是爲了支持類適度的範圍內 - 無論是原語和定製類(做明確'延伸序列化) 。
那麼處理這些基元的自動序列化的方法是什麼?
考慮這個小片段:布爾是不是可序列化?
scala> val u = true.asInstanceOf[Serializable]
java.lang.ClassCastException: java.lang.Boolean cannot be cast to scala.Serializable
那麼這是一個有點意外的..的動機是爲了支持類適度的範圍內 - 無論是原語和定製類(做明確'延伸序列化) 。
那麼處理這些基元的自動序列化的方法是什麼?
java.lang.Boolean的不是scala.Serializable。然而了java.io.Serializable:
scala> val u = true.asInstanceOf[java.io.Serializable]
u: java.io.Serializable = true
的,這似乎預示着某種JVM和.NET之間的跨平臺序列化有關scala.Serializable見http://www.scala-lang.org/api/2.11.8/#scala.Serializable。
您可以使用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(不斯卡拉)二進制序列化框架的一部分。因此,課程將java.io.Serializable
擴展爲可序列化就足夠了。 boolean
原語被認爲是java.io.Serializable
:
true.isInstanceOf[scala.Serializable] // false
true.isInstanceOf[java.io.Serializable] // true
是的我沒有注意到它是scala.Serializable而不是java.io.Serializable。 – javadba
聽起來像是一個有用的見解。我現在正在研究它。 – javadba
顯然我需要更多的關注*哪些* Serializable intellij提供爲我導入。 scala版本很少(如果有的話)是所需的版本。 – javadba