在Scala中是否有任何用於序列化/酸洗/編組對象的示例,教程或文檔?我知道scala.util.Marshal和scala.reflect.internal.pickling的存在,但它們之間有什麼不同?我怎麼用它?這是一些實驗性功能還是我可以在生產中使用它?在scala中的序列化(酸洗/編組)?
回答
你應該使用java序列化(我推薦在複雜情況下使用Externalizable方法)。你可以在googling "java serialization tutorial"找到很多教程。
如果你想留在斯卡拉,你應該看看SBinary它使用可組合類型的類。這個項目看起來很舊而且沒有維護,但是和Scala 2.9.2一樣魅力十足。自述文件中有一個教程鏈接,我正在編寫另一個鏈接。
我不知道人們可以使用Java序列化Scala對象 –
唯一的區別在於Scala可序列化是一個註釋。看看這個問題:http://stackoverflow.com/questions/3442171/how-do-i-use-a-serializable-scala-object – paradigmatic
請注意,Java序列化不處理使用泛型的不可變列表[A] 。您必須改用Array [A]。我不確定其他容器。外部化可能不是案例類的方式(赦免雙關語)外部化需要一個沒有參數的構造函數,以便它能夠工作。對於那些試圖堅持Scala的通用慣例來堅持不變對象的人來說,這可能並不理想。 –
不確定您的要求,但值得一看Google的Protocol Buffers和Apache Thrift。兩者都提供了有效的序列化機制。
有一個協議緩衝器Scala編譯器ScalaBuff
哇!真棒看到我的項目被提及爲可能的解決方案! :)我應該補充一點,我仍然在研究一些更高級的部分,它可能不是那麼容易設置,因爲它應該是(我必須做一個簡單的示例項目),但它仍然應該漂亮好(protobuf協議太棒了!)。如果有人有任何問題,只需在GitHub頁面上打開一個問題,我會盡快回復!有關使用示例(使用Android),請查看我的[SenseGrid項目](https://github.com/SandroGrzicic/sensegrid)。 –
- 1. 使用酸洗在Scala上序列化具有特徵的類時出錯?
- 2. 如何避免酸洗字典VS酸洗列表的處罰
- 3. 酸洗的OrderedDict
- 4. 的Python酸洗
- 5. 在Python中瞭解酸洗
- 6. 酸洗對象
- 7. 酸洗AppEngine上
- 8. 酸洗數據
- 9. 酸洗類方法
- 10. 酸洗使用defaultdict
- 11. 酸洗內部類
- 12. Python酸洗問題
- 13. Python字典酸洗
- 14. Python中酸洗錯誤?
- 15. EOF Python中酸洗錯誤
- 16. 在SWI Prolog中等效的Python酸洗?
- 17. 在Python中酸洗數據時的MemoryError
- 18. Python的酸洗槽錯誤
- 19. 熊貓時間系列和酸洗
- 20. 在Python中酸洗時發生EOFError
- 21. 在Python中酸洗錯誤:io.UnsupportedOperation:讀
- 22. 從Python中的多個線程酸洗
- 23. 的Python酸洗變量只有在超
- 24. Pygame與酸洗錯誤
- 25. 酸洗OrderedDict派生對象
- 26. Python酸洗字典EOFError
- 27. 酸洗一個類定義
- 28. 酸洗Django查詢集
- 29. 酸洗增強python函數
- 30. 酸洗數據問題
'scala.util.Marshal'已棄用。一般來說,只要使用平臺功能進行(反)序列化,就可以毫無問題地工作。 – soc