龙空技术网

Java中RPC过程为什么要显示声明UID?

进击的程序员 159

前言:

现时小伙伴们对“javauid”大体比较关心,大家都需要学习一些“javauid”的相关资讯。那么小编在网络上收集了一些对于“javauid””的相关知识,希望姐妹们能喜欢,姐妹们快快来了解一下吧!

UID是什么?

UID(Stream Unique Identifier)是流唯一标识符,在Java类中定义的,可以显示声明,也可以隐式声明。显示声明为

private static final long serialVersionUID = xxxL

隐式声明是编译器在编译时生成的,生成方式极度复杂,是通过包名,类名,继承关系,非私有的方法和属性等诸多因子计算得出。

UID的作用是什么?

JVM在反序列化时,会比较数据流中的UID和当前类的UID是否相同,不相同则说明类变化了,无法反序列化,抛出InvalidClassException,可以保证网络传输中的一致性。

为什么要显示声明UID?

假如数据序列化时修改了类,添加了某一个无关紧要的方法,导致隐式的UID变化了。数据反序列化时并没有同步修改,会导致反序列化异常。如果采用显示声明,则依然可以反序列化。

标签: #javauid