2016-07-11 5 views
-5

誰でも指定したプログラムの出力を説明できますか?このプログラムのシリアライゼーション出力で混乱しています

プログラム

public class Serial implements Serializable 
{ 
    String name; 

    int i; 

    public Serial() 
    { 
     name = "serial"; 
     System.out.println("Constructor"); 
    } 
} 

public class Main 
{ 
    public static void main(String[] args) throws Exception 
    { 
     Serial s = new Serial(); 

     FileOutputStream fo = new FileOutputStream("rohit.rohit"); 
     ObjectOutputStream oo = new ObjectOutputStream(fo); 
     oo.writeObject(s); 

     FileInputStream fi = new FileInputStream("rohit.rohit"); 
     ObjectInputStream oi = new ObjectInputStream(fi); 
     Serial se = (Serial) oi.readObject(); 
     System.out.println(se.name +" "+ se.i); 
     } 
} 

出力が

あるコンストラクタ

シリアル0

私は、コンストラクタは呼び出さないことを期待していました。しかし、ここのコンストラクタは何も印刷せずに呼び出して値を初期化するだけです。これを説明してください。ライン後

+0

は、なぜあなたは、コンストラクタが呼ばれることを期待していなかったので、参照してコンストラクタを呼び出していますか? – EJP

答えて

1

はあなたが自分でそれを呼び出したときにSOP

Serial s = new Serial(); 
+0

ただし、se.nameに値を割り当てるデシリアライズ時には、 –

+1

オブジェクトをシリアライズすると、この値もシリアル化され、デシリアライゼーション値がまだ残っています。これがシリアライズ - デシリアライゼーションの基本概念です。シリアライゼーションについての良いチュートリアルを読むことをお勧めします – Sanjeev

+0

正..ありがとうございました。 –

関連する問題