首页 > 编程知识 正文

setfocusable,todo

时间:2023-05-04 15:23:52 阅读:39258 作者:1201

原始标题:序列化版本号serialVersionUID角色

Java序列化将对象编码为字节流,而反序列化将字节流编码转换为对象。 序列化是一种在Java中实现永久存储的方法。 为数据传输提供线路级的对象表示。

Java序列化机制通过在运行时确定类的serialVersionUID来验证版本的一致性。 执行反序列化时,JVM可以将传入的字节流中的serialVersionUID与本地对应实体(类)的serialVersionUID进行比较,并认为它们一致,然后执行反序列化。 否则,会出现序列化版本不匹配的异常。

在eclipserializableclassxxxxxdoesnotdeclareastaticfinalserialversionuidfieldoftypelong中出现了这种警告处理方法。

使用程序的AdddefaultSerialversionID进行修复时,Eclipse表示专用长时间序列1l;

在使用程序的AddgeneratedSerialversionID进行修复时,Eclipse将私有状态设置为私有longserialversionuid=xxxl;

其实这个问题的具体原因和正在序列化的这个serialVersionUID有关。 serialVersionUID用于指示类的不同版本之间的兼容性。 有两种生成方法。 一个是默认的1L。 另一种方法是根据类名、接口名、成员方法、属性等生成64位散列字段。 在JDK中,可以使用JDK的xrpdxh目录中的serialver.exe工具生成此serialVersionUID的值。 对于Test.class,请运行命令。

serialverTest通过JVM(java虚拟机)生成散列字段。

比较此散列字段的值与方法2中生成的字段的值相同时,可以看到在CMD中使用serialver命令时,会根据类名、接口名、成员方法和属性等生成散列字段

为什么需要在java类中重新加载serialVersionUID属性?

两个进程进行远程通信时,彼此可以发送不同类型的数据。 无论是什么类型的数据,都作为二进制序列在网络上传输。 发送方必须将此Java对象转换为字节序列,并在网络上传输; 接收方必须将字节列返回给Java对象。 将Java对象转换为字节序列的过程称为对象序列化,将字节序列返回Java对象的过程称为对象反序列化。

对象序列化主要有两种用途。

1 )将对象字节串永久保存在硬盘上,一般保存在一个文件中;

2 )在网络上传输对象的字节串。

java.io.ObjectOutputStream表示对象输出流,writeObject(Objectobj方法序列化由参数指定的obj对象,并将得到的字节序列作为目标输出流java.io.ObjectInputStream表示对象输入流,readObject ) )方法从源输入流读取字节序列,并将其反序列化回对象。 只有实现序列化或扩展接口的类的对象才能序列化。 可扩展接口是从可序列化接口继承的。 实现Externalizable接口的类完全由自己控制序列化行为,而只实现Serializable接口的类可以采用默认的序列化方法。 实现序列化接口的所有类都有表示序列化版本标识符的静态变量privatestaticfinallongserialversionuid。 类的serialVersionUID的默认值完全取决于Java编译器的实现,如果使用不同的Java编译器编译同一类,则可能会出现不同的serialVersionUID。 显式定义serialVersionUID有两个目的:

1 )在某些情况下,希望类的不同版本与序列化兼容,因此需要确保类的不同版本具有相同的serialVersionUID; 在某些情况下,您可能不希望类的每个版本的序列化都兼容,因此必须确保每个类版本都有不同的serialVersionUID。

2 )欢呼的声音序列化类实例后,如果尝试在未设置serialVersionUID的情况下修改或添加字段,则任何更改都无法反序旧实例,反序列化时抛出异常。 添加serialVersionUID时,如果反转旧实例的顺序,则新添加或更改的字段的值将设置为初始化值(对象为null,基本类型为相应的初始默认值),即使删除字段也不会设置

序列化算法通常遵循以下步骤:

输出与对象实例相关的分类元数据。

递归输出类的超类描述,直到超类消失。

类元数据结束后,将从顶级超类开始输出对象实例的实际数据值。

从上到下递归输出实例数据,返回搜狐,显示更多信息

责任编辑:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。