Es ist etwas schwierig, eine tiefe Objektkopierfunktion zu implementieren. Wie stellen Sie sicher, dass das Originalobjekt und das geklonte Objekt keine gemeinsame Referenz haben?
Antwort
Zu viele Anzeigen?
mastercool
Punkte
353
Hier ist ein einfaches Beispiel, wie man ein beliebiges Objekt tief klont: Zuerst serialisierbar implementieren
public class CSVTable implements Serializable{
Table<Integer, Integer, String> table;
public CSVTable() {
this.table = HashBasedTable.create();
}
public CSVTable deepClone() {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
return (CSVTable) ois.readObject();
} catch (IOException e) {
return null;
} catch (ClassNotFoundException e) {
return null;
}
}
}
Und dann
CSVTable table = new CSVTable();
CSVTable tempTable = table.deepClone();
ist die Art und Weise, wie man den Klon erhält.
- See previous answers
- Weitere Antworten anzeigen