Hi,
ich habe grade zwei Klassen erstellt, welches ein Shallow Clone ermöglichen:
Das klappt auch soweit alles wunderbar... jedoch verstehe ich es nicht, wie die clone() Methode so umschreibe, dass auch weitere Referenzen gespeichert werden?
Habe ich den Unterschied zwischen Shallow und Deep Clone richtig verstanden???
Hätte jemand vllt. ein Codeschnipsel für mich, was ich zu meinem Code anfügen muss, damit auch Deep Clone möglich ist? Wäre echt nett! Danke euch
ich habe grade zwei Klassen erstellt, welches ein Shallow Clone ermöglichen:
Java:
package clone;
/** Testen von Clone */
public class Buch implements Cloneable {
/* Variablen */
private String titel;
private String autor;
private double preis;
/* Konstruktor */
public Buch(String titel, String autor, double preis) {
this.titel = titel;
this.autor = autor;
this.preis = preis;
}
@Override
/* Equals */
public boolean equals(Object o) {
boolean istGleich = false;
if(o instanceof Buch) {
Buch b2 = (Buch) o;
istGleich = this.titel.equals(b2.titel)
&& this.autor.equals(b2.autor)
&& this.preis == b2.preis;
}
return istGleich;
}
@Override
/* HashCode */
public int hashCode() {
return this.titel.hashCode() + this.autor.hashCode() + (int)this.preis;
}
@Override
/* toString */
public String toString() {
return this.titel + ", " + this.autor + ", " + this.preis + " EU.";
}
@Override
/* Überschreiben von clone() */
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
/* Tests */
public static void main(String[] args) throws CloneNotSupportedException {
Buch buch1 = new Buch("Das Erhängnis", "Bernd Spinner", 17.80);
System.out.println(buch1);
System.out.println("");
Buch buch2 = (Buch)buch1.clone();
System.out.println("Clone:");
System.out.println(buch1.equals(buch2));
System.out.println(buch1 == buch2);
}
}
Das klappt auch soweit alles wunderbar... jedoch verstehe ich es nicht, wie die clone() Methode so umschreibe, dass auch weitere Referenzen gespeichert werden?
Habe ich den Unterschied zwischen Shallow und Deep Clone richtig verstanden???
Hätte jemand vllt. ein Codeschnipsel für mich, was ich zu meinem Code anfügen muss, damit auch Deep Clone möglich ist? Wäre echt nett! Danke euch