[JAVA] Erstellen eines Objekts ohne Durchlaufen des Konstruktors

In den folgenden Fällen wird das Objekt ohne Verwendung des Konstruktors erstellt. ・ Beim Klonen ・ Beim Deserialisieren

Führen Sie dieses Programm aus und stellen Sie sicher, dass der "Konstruktor" nur einmal angezeigt wird

Tips0013.java


package jp.avaj.lib.algo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import jp.avaj.lib.test.L;

class Tips0013 {
  public static void main(String[] args) throws CloneNotSupportedException, FileNotFoundException, IOException, ClassNotFoundException {
    //
    Data data = new Data();
    //
    L.p("Klon ausführen");
    Data copyData = (Data)data.clone();
    //
    L.p("Führen Sie Serialize aus");
    String filename = "./Tips0013.txt";
    ObjectOutputStream oos = null;
    try {
      oos = new ObjectOutputStream(new FileOutputStream(filename));
      oos.writeObject(data);
    }
    finally {
      oos.close();
    }
    L.p("Führen Sie deserialize aus");
    ObjectInputStream ois = null;
    try {
      ois = new ObjectInputStream(new FileInputStream(filename));
      Data newData = (Data)ois.readObject();
    }
    finally {
      ois.close();
    }
    //Löschen Sie die Arbeitsdatei
    File workFile = new File(filename);
    workFile.delete();
    L.p("Verarbeitung beenden");
  }

  private static class Data implements Cloneable,Serializable {
    private String v;
    public Data() {
      v = "aaaa";
      L.p("Konstrukteur");
    }
    public Object clone() throws CloneNotSupportedException {
      return super.clone();
    }
  }
}

Das Ergebnis ist wie folgt.

tips0014.txt


Konstrukteur
Klon ausführen
Führen Sie Serialize aus
Führen Sie deserialize aus
Verarbeitung beenden

Recommended Posts

Erstellen eines Objekts ohne Durchlaufen des Konstruktors
Gibt es eine Instanz, auch wenn der Konstruktor ausfällt?
Sprechen Sie darüber, wie Sie beim Delombok den Quellpfad durchlaufen