Я следую базовому примеру сериализации объекта scala .Однако при выполнении приведенного ниже модульного теста
package mytest
import java.io.{ByteArrayOutputStream, ObjectOutputStream}
import org.scalatest.{Matchers, WordSpec}
class BasicSerializationSpec extends WordSpec with Matchers {
@SerialVersionUID(123L)
class TestRecord(var content: String) extends Serializable {
override def toString = s"TestRecord($content)"
}
"A TestRecord" should {
"be serializable" in {
val oo = new ObjectOutputStream(new ByteArrayOutputStream())
val tr = new TestRecord("42")
oo.writeObject(tr)
oo.close
}
}
}
я получаю исключение:
org.scalatest.Assertions $ AssertionsHelper java.io.NotSerializableException: at java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1184) в java.io.ObjectOutputStream.defaultWriteFields (ObjectOutputStream.java:1548) в java.io.ObjectOutputStream.writeSerialData (ObjectOutputStream.javaOputOutOutOutOjectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOjectOject.jectOject.jectOject.jectOjectOject.jectOject.utOject.jectOject.jectOject.jectOject.utOject.jectOut.jectOject.jectOject.jectOut.jectOut.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOject.jectOutjava: 1432) в java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1178) в java.io.ObjectOutputStream.defaultWriteFields (ObjectOutputStream.java:1548) в java.io.ObjectOutputStream.wavaOutputStream.wavaOutputDreamStwatautDDjava.io.ObjectOutputStream.writeOrdinaryObject (ObjectOutputStream.java:1432) в java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1178) в java.io.ObjectOutputStream.writeObject (ObjectavautS3).anonfun $ новый $ 2 (BasicSerializationSpec.scala: 20)
Я пытался явно указать тип
val tr : java.io.Serializable = new TestRecord("42")
Но все же не повезло.
Как правильно сделатьсериализовать объект scala в java ObjectOutputStream ?
Это не дублирование других ответов стека , потому что я явно расширяю Serializable
с помощью моего объявления класса.
Заранее благодарим вас за внимание и ответ.