黑马程序员技术交流社区
标题:
serialVersionUID检查是起什么用的,求解。
[打印本页]
作者:
Kael
时间:
2014-5-11 16:29
标题:
serialVersionUID检查是起什么用的,求解。
package exception;
//报感叹号The serializable class MinusException does not declare a static final serialVersionUID field of type long
class MinusException extends RuntimeException {
MinusException() {
}
MinusException(String msg) {
super(msg);
}
}
class Demo {
public int method(int[] arr, int index) {
if (index < 0) {
throw new MinusException();
}
return arr[index];
}
}
public class ArrayIndexException {
public static void main(String[] args) {
int[] arr = new int[3];
Demo d = new Demo();
d.method(arr, -20);
}
}
复制代码
作者:
小周务商
时间:
2014-5-11 17:04
相当于给Class文件指定一个ID标识。
作者:
Kael
时间:
2014-5-11 18:34
小周务商 发表于 2014-5-11 17:04
相当于给Class文件指定一个ID标识。
意思是在这个类为什么要给标识。其他类不用。
作者:
小周务商
时间:
2014-5-12 00:04
Kael 发表于 2014-5-11 18:34
意思是在这个类为什么要给标识。其他类不用。
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)
你学到序列流的时候就应该知道的吧。比较读取配置文件的时候。
作者:
嗯√低调〆
时间:
2014-5-12 16:24
楼上说的对啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2