`
锅巴49
  • 浏览: 161724 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 序列化的一些问题

阅读更多

java 将对象序列化到文件后,若原对象更改了属性名称,增加/删除方法是否会反序列化失败?我试验了下,得出的结果是

 

1、序列化是根据private static final long serialVersionUID = 1L;来控制两边的版本的,如果这个不一致,即使是相同对象也会反序列化报错,因此这个是核心。

2、序列化后,若文件属性变更/删除/增加 将不影响反序列化成功。只是该值不会置入而已。

3、方法是不序列化的。 附上代码,大家可以试试。

 

代码如下:

 

/**
 *
 * 描述
 *
 * @author 锅巴
 * @version 1.0 2010-7-5
 */
public class Test implements Serializable{

    /**
     *
     */
    private static final long serialVersionUID = 2L;
   
    private String id;
   
    private String name;
   
    private String content;
   
    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
   
    public String toString(){
        return id + "-" + name;
    }
   
   
    public static void main(String[] args) throws Exception {
       
          String fileName = "D:\\workspace_mvn\\my-nom\\obj.txt";
//        Test t = new Test();
//        t.setId("123456");
//        t.setName("hello world");
//        toFile(fileName,t);
       
       
          Test t = (Test)fromFile(fileName);
          System.out.println(t);
       
       
    }
   
    private static void toFile(String fileName,Object object) throws FileNotFoundException, IOException{
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName,false));
        oos.writeObject(object);
        oos.close();
    }
   
    private static Object fromFile(String fileName) throws FileNotFoundException, IOException, ClassNotFoundException{
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName));
        return ois.readObject();
    }
   
   

   
}

 

 

 

1
0
分享到:
评论
3 楼 mercyblitz 2010-07-06  
beneo 写道
那单例模式序列化反序列化,能否保证对象唯一呢?


没有办法保证,因为序列化是深入克隆,创建型。
2 楼 beneo 2010-07-06  
那单例模式序列化反序列化,能否保证对象唯一呢?
1 楼 mercyblitz 2010-07-05  
serialVersionUID相当于类结构版本控制。

相关推荐

Global site tag (gtag.js) - Google Analytics