Serializableインタフェースの制御可能なシーケンス化を実現


シーケンス化インタフェースを実装Serializableは、変数とtransient変数のシーケンス化制御を制御することもできます.コードを参照してください.
  
package com.bird.thinking;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
 * @use  Serializable 
 * @author Bird
 *
 */
public class SerialCtl implements Serializable {
	private static final long serialVersionUID = 1L;
	private String a;
	private transient String b;// transient
	public SerialCtl(String aa, String bb){
		a = "Not Transient : " + aa;
		b = "Transient :" + bb;
	}
	
	public String toString(){
		return a + "
" + b; } private void writeObject(ObjectOutputStream stream) throws Exception{ stream.defaultWriteObject();// transient stream.writeObject(b);// transient } private void readObject(ObjectInputStream stream) throws Exception{ stream.defaultReadObject();// transient b = (String) stream.readObject(); } public static void main(String[] args) throws Exception{ SerialCtl sc = new SerialCtl("test1", "Test2"); System.out.println("Before:
" + sc); ByteArrayOutputStream buf = new ByteArrayOutputStream(); ObjectOutputStream o = new ObjectOutputStream(buf); o.writeObject(sc); Thread.sleep(500); // ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buf.toByteArray())); SerialCtl sc2 = (SerialCtl) in.readObject(); System.out.println("After:
" + sc2); } }

実行結果は
Before:
Not Transient : test1
Transient :Test2
After:
Not Transient : test1
Transient :Test2
は、transient変数がシーケンス化され、逆シーケンス化されることを発見することができる.