Heim >Java >javaLernprogramm >Wie tausche ich Objektdaten in Java aus? (Codebeispiel)

Wie tausche ich Objektdaten in Java aus? (Codebeispiel)

藏色散人
藏色散人Original
2019-03-19 11:52:484879Durchsuche

Angenommen, wir haben eine Klasse namens „Car“, die einige Eigenschaften hat. Wir haben zwei Objekte von Auto erstellt, Auto1 und Auto2. Wie tauscht man die Daten von Auto1 und Auto2 aus?

Wie tausche ich Objektdaten in Java aus? (Codebeispiel)

Eine einfache Lösung besteht darin, die Mitglieder auszutauschen. Wenn die Klasse Car beispielsweise nur ein ganzzahliges Attribut „no“ (Autonummer) hat, können wir die Autos austauschen, indem wir einfach die Mitglieder der beiden Autos austauschen.

class Car 
{ 
    int no; 
    Car(int no) { this.no = no; } 
} 
  
class Main 
{  
    public static void swap(Car c1, Car c2) 
    { 
        int temp = c1.no; 
        c1.no = c2.no; 
        c2.no = temp; 
    } 
    
    public static void main(String[] args) 
    { 
        Car c1 = new Car(1); 
        Car c2 = new Car(2); 
        swap(c1, c2); 
        System.out.println("c1.no = " + c1.no); 
        System.out.println("c2.no = " + c2.no); 
    } 
}

Ausgabe:

c1.no = 2
c2.no = 1

Was ist, wenn wir die Mitglieder von Car nicht kennen?

Die obige Lösung funktioniert, weil wir wissen, dass es ein Mitglied in Car gibt "NEIN". Was passiert, wenn wir die Mitglieder von Car nicht kennen oder die Mitgliederliste zu groß ist? Dies kommt sehr häufig vor, da die Klasse, die die andere Klasse verwendet, möglicherweise keinen Zugriff auf die Mitglieder der anderen Klasse hat. Funktioniert die folgende Lösung?

class Car 
{ 
    int model, no; 
  
    Car(int model, int no) 
    { 
        this.model = model; 
        this.no = no; 
    } 
  
    void print() 
    { 
        System.out.println("no = " + no + 
                           ", model = " + model); 
    } 
} 
  
class Main 
{ 
    public static void swap(Car c1, Car c2) 
    { 
        Car temp = c1; 
        c1 = c2; 
        c2 = temp; 
    } 
  
    public static void main(String[] args) 
    { 
        Car c1 = new Car(101, 1); 
        Car c2 = new Car(202, 2); 
        swap(c1, c2); 
        c1.print(); 
        c2.print(); 
    } 
}

Ausgabe:

no = 1, model = 101
no = 2, model = 202

Aus der obigen Ausgabe können wir ersehen, dass es keine ausgetauschten Objekte gibt. Parameter werden in Java als Wert übergeben. Wenn wir also c1 und c2 an swap() übergeben, erstellt die Funktion swap() Kopien dieser Referenzen.

Die Lösung besteht darin, die Wrapper-Klasse zu verwenden. Wenn wir eine Wrapper-Klasse erstellen, die die Car-Referenz enthält, können wir das Car austauschen, indem wir die Referenz der Wrapper-Klasse austauschen.

class Car 
{ 
    int model, no; 
  
    Car(int model, int no) 
    { 
        this.model = model; 
        this.no = no; 
    } 
  
    void print() 
    { 
        System.out.println("no = " + no +  
                           ", model = " + model); 
    } 
} 
  
class CarWrapper 
{ 
   Car c; 
  
   CarWrapper(Car c)   {this.c = c;} 
} 
  
class Main 
{ 
    public static void swap(CarWrapper cw1,  
                            CarWrapper cw2) 
    { 
        Car temp = cw1.c; 
        cw1.c = cw2.c; 
        cw2.c = temp; 
    } 
  
    public static void main(String[] args) 
    { 
        Car c1 = new Car(101, 1); 
        Car c2 = new Car(202, 2); 
        CarWrapper cw1 = new CarWrapper(c1); 
        CarWrapper cw2 = new CarWrapper(c2); 
        swap(cw1, cw2); 
        cw1.c.print(); 
        cw2.c.print(); 
    } 
}

Ausgabe:

no = 2, model = 202
no = 1, model = 101

Selbst wenn die Benutzerklasse also nicht auf die Mitglieder der Klasse zugreifen kann, mit der Sie das Objekt austauschen möchten, funktioniert die Wrapper-Klassenlösung trotzdem.

Verwandte Empfehlungen: „Java-Tutorial

Dieser Artikel ist eine Einführung in die Methode zum Austauschen von Objekten in Java. Ich hoffe, er wird Freunden in Not hilfreich sein!

Das obige ist der detaillierte Inhalt vonWie tausche ich Objektdaten in Java aus? (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn