Ja, es tut nichts, außer die gleiche Referenz, die übergeben wurde.
Wahrscheinlich werden Sie nach der Object#clone()
* Methode suchen:
public Validation copy(Validation newValidation) {
return newValidation.clone();
}
In 95% der Fälle, ist, dass die am besten geeignete und angemessene Lösung für verschiedene Arten von Aufgaben. Sie sollten das Rad nicht neu erfinden, wenn Sie es nicht brauchen.
Als Java-Dokumentation sagt:
... Diese Methode führt eine "flache Kopie" dieses Objekts, keine "tiefe Kopie" Betrieb.
... es kann notwendig sein, ein oder mehrere Felder des Objekts zu ändern, das von super.clone
zurückgegeben wird, bevor es zurückgegeben wird.
Validation y = x.copy(x);
Sie sollten keine x
auf eine copy
-Methode übergeben, denn wenn man auf einer x
Instanz diese Methode aufrufen, in der Klasse, die Sie einen Zugang zu this
haben, die in diesem Fall Ihre x
darstellt .
Validation y = x.clone();
Für eine "flache Kopie" das obige Beispiel ist gut, aber für eine "tiefe Kopie" Sie benötigen einen Standard Object#clone()
Verhalten außer Kraft zu setzen:
class A implements Cloneable {
public @Override A clone() throws CloneNotSupportedException {
return (A)super.clone(); // or or another implementation
}
}
class Validation implements Cloneable {
// an example of a reference-type field
private A a; // with a setter
public @Override Validation clone() throws CloneNotSupportedException {
Validation newClone = new Validation();
// note that the `A` class has to implement the `Cloneable`
// and override the `clone` method making it `public`
newClone.setA(this.a.clone());
return newClone;
}
}
* Vergessen Sie nicht, die Schnittstelle Cloneable
zu implementieren, um das Klonen zu ermöglichen.
zu lesen: Effective Java, Item 11: Override clone judiciously.
Ob Sie eine tiefe Kopie benötigen oder nicht, hängt alles vom Code innerhalb der Vlidation-Klasse ab, können Sie Ihren Validierungscode angeben? – developer
Das Beispiel in der Verknüpfung erstellt eine Kopie des aktuellen Objekts ('this'). – infiniteRefactor
Mögliches Duplikat von [Clone() vs Copy-Konstruktor - was in Java empfohlen wird] (http://stackoverflow.com/q/2427883/5221149). – Andreas