Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaシリアル化のオブジェクトグラフ


オブジェクトグラフには、参照を含むオブジェクトもシリアル化されている場合に自動的にシリアル化されるオブジェクトのセットが含まれています。シリアル化され、objectreferenceを含むオブジェクトは、JVMによってシリアル化されます。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class One implements Serializable{
   Two s2 = new Two();
}
class Two implements Serializable{
   Three s3 = new Three();
}
class Three implements Serializable{
   int i = 34;
   int j = 67;
}
public class Demo_Serialize{
   public static void main(String args[]) throws Exception{
      One s1 = new One();
      FileOutputStream my_fos = new FileOutputStream("abc.ser");
      ObjectOutputStream my_oos = new ObjectOutputStream(my_fos);
      my_oos.writeObject(s1);
      my_fos.close();
      my_oos.close();
      FileInputStream my_fis = new FileInputStream("abc.ser");
      ObjectInputStream my_ois = new ObjectInputStream(my_fis);
      One my_obj = (One) my_ois.readObject();
      my_fis.close();
      my_ois.close();
      System.out.println("Value of i after it is serialized is " + my_obj.s2.s3.i);
      System.out.println("Value of j after it is serialized is "+my_obj.s2.s3.j);
   }
}

出力

Value of i after it is serialized is 34
Value of j after it is serialized is 67

「One」という名前のクラスは、「Serializable」クラスを継承しています。ここでは、別のクラスの別のインスタンスが作成されます。同じクラスが「Serializable」クラスに継承されます。この場合も、このクラス内に別のインスタンスが作成されます。

別のクラスは「Serializable」クラスを継承します。ここでは、2つの整数が定義され、「Demo_Serialize」という名前の別のクラスが作成されます。ここでは、main関数が定義されています。最初のクラスのインスタンスが定義され、FileOutputStreamとObjectOutputStreamのインスタンスが作成されます。オブジェクトは、これらのストリームを使用して書き込まれます。その後、ストリームは閉じられます。これは、データをシリアル化するためにもう一度実行されます。関連する出力がコンソールに表示されます。


  1. Javaで抽象クラスのオブジェクトを作成できますか?

    いいえ、抽象クラスのオブジェクトを作成することはできません。ただし、抽象クラスの参照変数を作成することはできます。参照変数は、派生クラス(抽象クラ​​スのサブクラス)のオブジェクトを参照するために使用されます。 抽象クラスとは、実装を非表示にし、関数定義をユーザーに表示することを意味し、抽象クラスと呼ばれます。 Java抽象クラスには、要件がわかっていて、抽象クラスに部分的に実装できる場合に、デフォルトの動作を実装するインスタンスメソッドを含めることができます。 例 abstract class Diagram {    double dim1;    

  2. Javaの最終クラス

    finalとして宣言されているクラスを使用する主な目的は、クラスがサブクラス化されないようにすることです。クラスがfinalとしてマークされている場合、どのクラスもfinalクラスから機能を継承できません。 public final class Test {    // body of class }