java 1l_java - 为什么生成长serialVersionUID而不是简单的1L?

当你使用serialVersionUID(1L)而不是生成serialVersionUID(3567653491060394677L)时,你会说些什么。

您是说100%确信没有任何系统可以触及此类具有此类的不兼容序列化版本且版本号为1的系统。

如果你能想到它的序列化版本历史未知的任何借口,那么可能很难自信地说出来。 在它的一生中,一个成功的课程将由许多人维护,生活在许多项目中,并且驻留在许多系统中。

你可以为此感到痛苦。 或者你可以玩彩票希望失败。 如果你生成版本,你很可能会出错。 如果你假设“嘿我打赌没有人用过1”你的赔率大于微小。 正是因为我们都认为0和1很酷,你有更高的命中率。

-

当您生成serialVersionUID(3567653491060394677L)而不是使用serialVersionUID(1L)时,您正在说些什么。

你是说人们可能在本课程的历史上手动创建或生成了其他版本号,而你并不在意,因为Longs正在大肆宣传。

无论哪种方式,除非你完全知道在整个宇宙中序列化类所使用的版本号的历史,否则你有机会。 如果你有时间100%确定1是AOK,那就去吧。 如果这需要很多工作,请继续并盲目地生成数字。 你更有可能赢得彩票而不是出错。 如果确实如此,请告诉我,我会给你买啤酒。

随着所有关于玩彩票的谈话,我可能给你的印象是serialVersionUID是随机生成的。 实际上只要数字范围均匀分布在Long的每个可能值上就可以了。 但是,它实际上是这样做的:

[http://docs.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100]

你得到的唯一区别是你不需要随机来源。 您正在使用类本身的更改来更改结果。 但根据鸽笼原则,它仍有可能出错并发生碰撞。 这非常不可能。 祝我喝啤酒好运。

然而,即使该类只存在于一个系统和一个代码库中,认为手动递增数字会使您没有碰撞的机会只意味着您不了解人类。:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值