java和uid_java – 什么是serialVersionUID和为什么我应该使用它?

The serialization runtime associates

with each serializable class a version

number, called a serialVersionUID,

which is used during deserialization

to verify that the sender and receiver

of a serialized object have loaded

classes for that object that are

compatible with respect to

serialization. If the receiver has

loaded a class for the object that has

a different serialVersionUID than that

of the corresponding sender’s class,

then deserialization will result in an

InvalidClassException. A serializable

class can declare its own

serialVersionUID explicitly by

declaring a field named

“serialVersionUID” that must be

static, final, and of type long:

06000

If a

serializable class does not explicitly

declare a serialVersionUID, then the

serialization runtime will calculate a

default serialVersionUID value for

that class based on various aspects of

the class, as described in the

Java(TM) Object Serialization

Specification. However, it is strongly

recommended that all serializable

classes explicitly declare

serialVersionUID values, since the

default serialVersionUID computation

is highly sensitive to class details

that may vary depending on compiler

implementations, and can thus result

in unexpected InvalidClassExceptions during deserialization. Therefore, to guarantee a consistent serialVersionUID value across different java compiler implementations, a serializable class must declare an explicit serialVersionUID value. It is also strongly advised that explicit serialVersionUID declarations use the private modifier where possible, since such declarations apply only to the immediately declaring class–serialVersionUID fields are not useful as inherited members.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值