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変数がシーケンス化され、逆シーケンス化されることを発見することができる.