scala class 序列化
时间: 2023-07-20 21:45:23 浏览: 123
要让 Scala 类可序列化,需要让该类实现 Serializable 接口。Serializable 接口是一个标记接口,即没有方法需要实现。例如,以下是一个可序列化的 Scala 类:
```scala
import java.io.Serializable
class MyClass(val name: String) extends Serializable {
def sayHello(): Unit = println(s"Hello, $name!")
}
```
这个类有一个 String 类型的属性 name 和一个方法 sayHello()。该类实现了 Serializable 接口,因此可以将其实例序列化为字节流,存储到磁盘或通过网络传输。
以下是一个简单的示例,演示了如何将一个 MyClass 实例序列化为字节流,然后再反序列化为一个新的实例:
```scala
import java.io._
val obj = new MyClass("Alice")
// Serialize the object to a byte array
val stream: ByteArrayOutputStream = new ByteArrayOutputStream()
val oos = new ObjectOutputStream(stream)
oos.writeObject(obj)
val bytes: Array[Byte] = stream.toByteArray
// Deserialize the object from the byte array
val ois = new ObjectInputStream(new ByteArrayInputStream(bytes))
val newObj = ois.readObject().asInstanceOf[MyClass]
// Test that the deserialized object is the same as the original object
newObj.sayHello() // prints "Hello, Alice!"
```
在这个例子中,我们首先创建了一个 MyClass 实例 obj,然后将其序列化为一个字节流,并将该字节流存储到一个字节数组中。接下来,我们从字节数组中反序列化出一个新的 MyClass 实例 newObj,并验证 newObj 和 obj 是相同的实例。
阅读全文