Deep-Copy von Java-Objekten
Objekte Klonen mal anders…
Eine Deep-Copy eines Objektes erstellen – der Schreibaufwand kann schon ganz schön nervig sein. Erstaunlich einfach geht es mit folgender Java-Klasse, wie man im folgenden Beispiel sieht…
package de.jschuler.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class DeepObjectCopy {
public static Object clone(Object copyObject) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(copyObject);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Object deepCopy = ois.readObject();
return deepCopy;
} catch (IOException e) {
e.printStackTrace();
} catch(ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
Die hier vorgestellte Methode clone() lässt sich in jede Klasse einbauen – vorausgesetzt, alles, woraus die Klasse besteht, ist serialisierbar…
DANKESCHÖN!!!