黑马程序员技术交流社区

标题: 关于对象序列化的问题 [打印本页]

作者: 唐巍    时间: 2012-3-26 16:32
标题: 关于对象序列化的问题
请看下面代码:
import java.io.*;
class Person implements Serializable//要序列化的对象为什么一定要实现这个Serializable接口?
{
        public static final long serialVersionUID=48L; //这里定义的UID有什么作用?
        private String name;
        transient int age;
        static String country="cn";//静态成员country怎么没保存到文件中?
        Person(String name,int age,String country)
        {
                this.name=name;
                this.age=age;
                this.country=country;
        }
        public String toString()
        {
                return name+"::"+age+"::"+country;
        }
}

作者: 〆_xin_、_跳    时间: 2012-3-26 17:48
类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。序列化运行时使用一个称为 serialVersionUID 的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的 serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致InvalidClassException。可序列化类可以通过声明名为 "serialVersionUID" 的字段(该字段必须是静态 (static)、最终 (final) 的 long 型字段)显式声明其自己的 serialVersionUID。你可以看一下java api帮助文档




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2