serialSerializable 与 transient

来源:互联网 发布:excel单元格数据关联 编辑:程序博客网 时间:2024/06/05 10:32

package com.pdsu;

import java.io.FileInputStream;
/*
 * 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。
 * 无论是何种类型的数据,都会以二进制序列的形式在网络上传送。
 * 发送方需要把这个对象转换为字节序列,才能在网络上传送;
 * 接收方则需要把字节序列再恢复为对象。把对象转换为字节序列的过程称为对象的序列化。
 * 把字节序列恢复为对象的过程称为对象的反序列化。说的再直接点,序列化的目的就是为了跨进程传递格式化数据
 */

import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class UserInfo implements Serializable { 
    private static final long serialVersionUID = 996890129747019948L;
    private String name;
    private transient String psw;
  
    public UserInfo(String name, String psw) {
        this.name = name;
        this.psw = psw;
    }
  
    public String toString() {
        return "name=" + name + ", psw=" + psw;
    }

public class TestTransient { 
    public static void main(String[] args) { 
        UserInfo userInfo = new UserInfo("张三", "123456");
        System.out.println(userInfo); 
        try { 
            // 序列化,被设置为transient的属性没有被序列化 
            ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("D://aa.txt"));
            o.writeObject(userInfo);
            o.close(); 
        } catch (Exception e) {
            e.printStackTrace();
        } 
        try {
            // 重新读取内容 
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("UserInfo.out")); 
            UserInfo readUserInfo = (UserInfo) in.readObject();
            
            //读取后psw的内容为null,没有被序列化的内容是不会I/O传输的
            System.out.println(readUserInfo.toString()); 
        } catch (Exception e) {
            e.printStackTrace();
   }
}
}

0 0
原创粉丝点击