Aufbau eines copy-Konstruktor in Java

Wie Baue ich einen copy-Konstruktor erhält einen weiteren Punkt (x,y) und eine Kopie der Werte ?

Ich entscheiden, Signatur: public Point1 (Point1 other) , aber ich weiß nicht, was zu schreiben, es...

Die Point-Klasse sieht wie folgt aus:

public class Point1

{
    private int _x ,  _y;    
    public Point1 (Point1 other)
    {
        ...
        ...
    }
//other more constructors here...

}

Habe ich versucht:

public Point1 (Point1 other)
{
    _x = other._x ;
    _y = other._y;
}

Aber ich fast sicher, dass ich es besser machen können..

thnx

  • C, ich denke du meinst zu haben public Point1(Point1 other) in Ihren Beispielen, nicht?
  • Ein Point ist ein Beispiel von etwas, das oft sollte unveränderlich sind, in dem Fall tatsächlich das kopieren nicht notwendig werden würde.
  • Warum denken Sie, sollte es einen anderen Weg? Alle ein copy-Konstruktor ist eigentlich zu tun ist, kopieren Sie die Werte des anderen Objekts Felder.
  • es gibt viele Beispiele, wo unveränderliche Objekte können dupliziert. Wandlungsfähigkeit zu tun hat mit der Fähigkeit zu ändern, die Daten, es ist nicht eine Garantie der Einzigartigkeit der übergeordneten Instanz. String a = new String("a"); String a2 = new String("a");
  • Ich sage nicht, dass der Unveränderlichkeit impliziert nichts über die Eindeutigkeit der Instanzen, nur, dass es keinen Sinn im erstellen einer Kopie von einem unveränderlichen Objekt. Was nützt die Schaffung absichtlich 2 verschiedene Objekte für "a" zu tun?
  • Gut, wir könnten erstellen, die basierend auf standard-Eingabe, statt die Leistung Treffer zu überprüfen, um zu sehen, ob es bereits geladen ist (über eine Technik, die ähnlich String.intern). Zusätzlich, code, macht häufige Verwendung mehrerer class loader entsorgen können Duplikate sicher, ob Sie existieren in unterschiedlichen class-loader (und die Konstruktion verhindert die Flucht aus der class-loader). Tomcat ist ein paar Elemente in Sitten ähnlich zu dieser Technik.
  • Ich denke, Sie ist noch gar nicht mich zu verstehen. Ich sage nicht, dass Strings muss immer ein Praktikum (oder etwas ähnliches), weil das zwei verschiedene Strings mit dem gleichen Inhalt ist schlecht. Das ist es nicht. Ich sage, dass, wenn Sie bereits eine String bewusst die Schaffung einer anderen String Objekt mit dem gleichen Inhalt (mit Hilfe der copy-Konstruktor) ist sinnlos. Eine andere Lesen String mit dem gleichen Inhalt von einem byte[] oder was auch immer ist in Ordnung.
  • Ich würde argumentieren, dass die Zeichenfolge sollte nicht die String(String) Konstruktor für den gleichen Gründen, die "ColinD" hingewiesen hat.

InformationsquelleAutor Master C | 2011-04-21
Schreibe einen Kommentar