天天看點

序列化和反序列化——Serializable和transient關鍵字

序列化和反序列化——Serializable和transient關鍵字

Serializable:序列化,通過Serializable接口将Java對象等内容轉換成資料進行運輸與儲存。

transient:反序列化,由transient修飾的成員變量不會進行序列化儲存。

package Serializable_;

import java.io.Serializable;

public class User implements Serializable {

	/**
	 * 序列版本号
	 */
	private static final long serialVersionUID = 1L;
	private String loginName;
	private transient String passWord;// 反序列化
	private String userName;

	public User() {

	}

	public User(String loginName,String passWord, String userName) {
		this.loginName=loginName;
		this.passWord = passWord;
		this.userName = userName;
	}

	public String getLoginName() {
		return loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public String getPassWord() {
		return passWord;
	}

	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	@Override
	public String toString() {
		return "User [loginName=" + loginName + ", passWord=" + passWord + ", userName=" + userName + "]";
	}

}

           
package Serializable_;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializableDome {

	public static void main(String[] args) throws Exception, IOException {
		// 序列化存儲
		ObjectOutputStream owt = new ObjectOutputStream(new FileOutputStream("D:\\試用文檔\\05.dat"));
		User user = new User("蒙奇.D.路飛", "123456", "路飛");
		owt.writeObject(user);
		owt.flush();
		owt.close();
		// 反序列化輸出
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\試用文檔\\05.dat"));
		User user1 = (User) ois.readObject();// 反序列化
		System.out.println(user1);
		System.out.println(user1.getPassWord());
		ois.close();

	}

}

           
序列化和反序列化——Serializable和transient關鍵字

可以看出不管怎樣都不能得到passWord的值

序列化和反序列化——Serializable和transient關鍵字

打開檔案看,隻有loginName和userName,而passWord并沒有出現,是以說被transient修飾的成員變量從根本就沒有儲存進檔案中去。