scala类序列化,无法修复SerialVersionUID
发布时间:2020-12-16 19:13:25 所属栏目:安全 来源:网络整理
导读:我目前正在测试远程演员在 Android和Windows之间进行通信. Actors远程发送不同的类,我设置serialVersionUID. 这是我的序列化类的代码: @SerialVersionUID(13.asInstanceOf[Long]) case class IdentifyMessage(userName : String,user : User,code : Int) 问
我目前正在测试远程演员在
Android和Windows之间进行通信. Actors远程发送不同的类,我设置serialVersionUID.
这是我的序列化类的代码: @SerialVersionUID(13.asInstanceOf[Long]) case class IdentifyMessage(userName : String,user : User,code : Int) 问题是远程actor调试说不兼容的类存在问题: caught java.io.InvalidClassException: scala.actors.remote.Node; local class incompatible: stream classdesc serialVersionUID = -6610463074147725500,local class serialVersionUID = -7525549079045563153 为什么我的SerialVersionUID对编译器无关紧要? 如何修复serialVersionUID?或者可能还有另一个问题? 谢谢 解决方法
由于某种原因使用长版13,13l,效果更好:
@SerialVersionUID(13l) case class IdentifyMessage(userName : String,code : Int) 在REPL中测试: java.io.ObjectStreamClass.lookup(IdentifyMessage("hei",User(),8).getClass).getSerialVersionUID() 更新 我也尝试将其作为程序运行;像这样: object SerialTest extends App { case class User() @SerialVersionUID(13.asInstanceOf[Long]) case class IdentifyMessage1(userName: String,user: User,code: Int) @SerialVersionUID(13l) case class IdentifyMessage2(userName: String,code: Int) println("#1 " + java.io.ObjectStreamClass.lookup(IdentifyMessage1("hei",8).getClass).getSerialVersionUID) println("#2 " + java.io.ObjectStreamClass.lookup(IdentifyMessage2("hei",8).getClass).getSerialVersionUID) } ……得到了: #1 6829060442504540290 #2 13 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- twitter-bootstrap – 如何在移动使用Bootstrap显
- AngularJS的学习--$on、$emit和$broadcast的使用
- macos – 如何使用CHMOD获取“drwx — r-x”文件
- twitter-bootstrap – 降低bootstrap 3.0 navbar
- Angular 2 – typescript中的window.print是什么
- WP7通过WebService天气服务获取天气信息
- posix – 在shell脚本中检测stdin内容的存在
- unix – 如何使sed从脚本文件读取脚本?
- 《数据结构》实验二:线性表实验(顺序表)
- bootstrap-fileinput图片上传
热点阅读