0

Java でシリアライゼーションを行っていたという質問があります。JVM の 2 つのインスタンスを開いた場合はお知らせください。2 つの異なる場所で 2 つの異なる Eclipse のワークスペースを開き、1 つのワークスペースでシリアライズするプログラムを作成したとします。 .ser 拡張子を持つファイル内のオブジェクトと、別のワークスペースを介して、その .ser ファイルを読み取ってオブジェクトを逆シリアル化するプログラムを作成しました。

そのオブジェクトが JVM の別のインスタンスでデシリアライズされることを教えてください。問題は、JVM の同じインスタンスでシリアル化および逆シリアル化されたオブジェクトが強制的に 1 であるという事実を中心に展開しています..!!

4

2 に答える 2

1

シリアル化は、オブジェクトの状態を任意のストレージ メディアに保存できるプロセスです。オブジェクトの状態をファイルやデータベース テーブルなどに保存できます。デシリアライゼーションは、ストレージ メディアからオブジェクトを取得するシリアライゼーションの反対のプロセスです。

例 1: Java Bean オブジェクトがあり、その変数にいくつかの値があるとします。次に、このオブジェクトをファイルまたはデータベース テーブルに保存します。これは、シリアル化を使用して実現できます。これで、必要なときにいつでもファイルまたはデータベースからこのオブジェクトを再度取得できます。これは、逆シリアル化を使用して実現できます。

**Serialization Example:**

Employee e = new Employee();
      e.name = "Reyan Ali";
      e.address = "Phokka Kuan, Ambehta Peer";

          e.SSN = 11122333;
          e.number = 101;
          try
          {
             FileOutputStream fileOut =
             new FileOutputStream("employee.ser");
             ObjectOutputStream out =
                                new ObjectOutputStream(fileOut);
             out.writeObject(e);
             out.close();
              fileOut.close();
          }catch(IOException i)
          {
              i.printStackTrace();
          }

**Deserializing an Object:**
The following DeserializeDemo program deserializes the Employee object created in the SerializeDemo program. Study the program and try to determine its output:



Employee e = null;
         try
         {
            FileInputStream fileIn =
                          new FileInputStream("employee.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            e = (Employee) in.readObject();
            in.close();
            fileIn.close();
        }catch(IOException i)
        {
            i.printStackTrace();
            return;
        }catch(ClassNotFoundException c)
        {
            System.out.println(.Employee class not found.);
            c.printStackTrace();
            return;
        }
        System.out.println("Deserialized Employee...");
        System.out.println("Name: " + e.name);
        System.out.println("Address: " + e.address);
        System.out.println("SSN: " + e.SSN);
        System.out.println("Number: " + e.number);
于 2012-08-11T06:28:36.297 に答える