第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Scala 對(duì)象的序列化

Scala 對(duì)象的序列化

躍然一笑 2022-07-20 15:58:40
我正在關(guān)注scala object serialization 的基本示例。但是,在運(yùn)行以下單元測(cè)試時(shí)package mytestimport 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    }  }}我得到一個(gè)例外:org.scalatest.Assertions$AssertionsHelper java.io.NotSerializableException:在 java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 在 java.io.ObjectOutputStream 的 java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)。 writeSerialData(ObjectOutputStream.java:1509) 在 java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 在 java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 在 java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java :1548) 在 java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 在 java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 在 java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 在 java .io。ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 在 mytest.BasicSerializationSpec.$anonfun$new$2(BasicSerializationSpec.scala:20)我試圖明確設(shè)置類型val tr : java.io.Serializable = new TestRecord("42")但仍然沒有運(yùn)氣。如何正確地將 scala 對(duì)象序列化為 java ObjectOutputStream?這不是其他堆棧答案的重復(fù),因?yàn)槲绎@然在擴(kuò)展Serializable我的類聲明。預(yù)先感謝您的考慮和回復(fù)。
查看完整描述

1 回答

?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

序列化內(nèi)部類在 Java 和 Scala 中都是一個(gè)雷區(qū),但是如果在您的真實(shí)代碼中沒有對(duì) 中BasicSerializationSpec的成員的引用TestRecord,您應(yīng)該能夠通過final在內(nèi)部類定義中添加修飾符來完成這項(xiàng)工作:

final class TestRecord(var content: String) extends Serializable {

在實(shí)際代碼中,您不太可能測(cè)試您在測(cè)試類中定義的類,但在測(cè)試內(nèi)部類時(shí)可能會(huì)遇到類似情況。


查看完整回答
反對(duì) 回復(fù) 2022-07-20
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)