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