码迷,mamicode.com
首页 > 编程语言 > 详细

Java的序列化机制

时间:2017-03-06 11:15:25      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:jin   文件中   port   反序列化   except   状态   null   ble   需要   

1. 所有实现序列化的类都必须实现Serializable接口,序列化有如下两个特点:

  • 如果一个类可以被序列化,那么它的子类也可以被序列化
  • 由于static代表类成员,trasient代表对象的临时数据,因此被声名为这两种类型的数据成员是不能被序列话的

2. 序列化和反序列化的实例

package StreamLearn;

import java.io.*;

/**
 * Created by liujinhong on 2017/3/6.
 */

/**
 * 序列化和返序列化实例
 */
public class SerialObjectTest {
    public static void main(String[] args) {
        People p = new People();
        ObjectOutputStream oos = null;
        ObjectInputStream ois = null;

        //序列化
        try {
            FileOutputStream fos = new FileOutputStream("/Users/liujinhong/Desktop/test/ttt");
            oos = new ObjectOutputStream(fos);

            oos.writeObject(p);
        } catch (Exception e) {
            System.out.println(e);
        } finally {

        }

        //反序列化
        People p1;
        try {
            FileInputStream fis = new FileInputStream("/Users/liujinhong/Desktop/test/ttt");
            ois = new ObjectInputStream(fis);

            p1 = (People) ois.readObject();

            System.out.println(p1.a);
            System.out.println(p1.b);
            System.out.println(p1.book.id);
        } catch (Exception e) {
            System.out.println(e);
        } finally {

        }
    }
}


class People implements Serializable {
    public int a = 1;
    public transient int b = 2;
    public Book book = new Book();
}

class Book implements Serializable {
    public int id = 1;
}

3. 什么情况下需要使用序列化?

  • 通过网络来发送对象,或对象的状态需要被持久化到数据库或文件中
  • 序列化能实现深复制,即可以复制引用的对象

4. serialVersionUID作用?

在序列化和反序列化的过程中,serialVersionUID起着非常重要的作用,每一个类都有一个特定的serialVersionUID,在反序列化的过程中通过serialVersionUID来判断类的兼容性。如果不兼容会跑出InvalidClassException异常。

5. 自定义serialVersionUID的优点?

  • 提高程序运行效率
  • 提高程序在不同平台上的兼容性
  • 增强各个版本的可兼容性

Java的序列化机制

标签:jin   文件中   port   反序列化   except   状态   null   ble   需要   

原文地址:http://www.cnblogs.com/liujinhong/p/6508801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!