首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阴性serialVersionUID?

阴性serialVersionUID?
EN

Stack Overflow用户
提问于 2013-05-19 21:55:25
回答 3查看 2.6K关注 0票数 3

我遇到了一个扩展exception的异常处理程序类,如下所示:

代码语言:javascript
复制
public class AppFileReaderException extends Exception {
    //Explicit serialization UID added 
    private static final long serialVersionUID = -2458461415998318236L;

    public AppFileReaderException(String msg) 
    {
        super(msg);
    }

作者使用了显式的序列化版本UID,并在其他类似的异常处理程序类中忽略了该UID。根据我对另一个SO post的理解,如果应用程序没有使用任何序列化和反序列化,我们可以忽略序列化UID。奇怪的是,作者使用了负UID。我很想知道这是有效的还是推荐的做法。使用负serialVersionUID还有其他原因吗?

EN

回答 3

Stack Overflow用户

发布于 2013-05-19 21:58:06

使用负serialVersionUID还有其他原因吗?

如果你看到任何“随机看起来”的显式serialVersionUID,它可能是由集成开发环境生成的,通常从UID开始,如果没有提供显式版本,就会生成UID。

序列化版本的UID就像哈希码--值的大小实际上是无关紧要的;除了用值之间的区别之外,正和负都没有意义。

票数 12
EN

Stack Overflow用户

发布于 2013-05-19 21:59:53

seialVersionUID用于确定序列化对象是否与当前版本的类兼容。除了值必须是长的,并且类的不兼容版本使用不同的值之外,没有任何限制。

票数 2
EN

Stack Overflow用户

发布于 2013-05-19 22:11:53

java.io.Serializable接口解释serialVersionUID可以计算,也可以固定。计算值基于类的各个方面。它类似于hashCode,它也可以是负的。在JDK中有一个IDE,给定一个类就可以计算这个值,尽管在实践中它通常是由serialver生成的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16635383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档