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();
}
}
}