A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐巍 黑马帝   /  2012-3-26 16:32  /  1487 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请看下面代码:
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;
        }
}

1 个回复

倒序浏览
类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。序列化运行时使用一个称为 serialVersionUID 的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的 serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致InvalidClassException。可序列化类可以通过声明名为 "serialVersionUID" 的字段(该字段必须是静态 (static)、最终 (final) 的 long 型字段)显式声明其自己的 serialVersionUID。你可以看一下java api帮助文档
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马