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

Wie tausche ich Objektdaten in Java aus? (Codebeispiel)

Mar 19, 2019 am 11:52 AM

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); 
    } 
}
Nach dem Login kopieren

Ausgabe:

c1.no = 2
c2.no = 1
Nach dem Login kopieren

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(); 
    } 
}
Nach dem Login kopieren

Ausgabe:

no = 1, model = 101
no = 2, model = 202
Nach dem Login kopieren

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(); 
    } 
}
Nach dem Login kopieren

Ausgabe:

no = 2, model = 202
no = 1, model = 101
Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann man in Java Remote -Debugging konstante Werte auf Remote -Servern korrekt erhalten? Wie kann man in Java Remote -Debugging konstante Werte auf Remote -Servern korrekt erhalten? Apr 19, 2025 pm 01:54 PM

Fragen und Antworten zum ständigen Akquisition beim Remote -Debuggen von Java Bei der Verwendung von Java für das entfernte Debuggen können viele Entwickler auf schwierige Phänomene stoßen. Es...

Wie wähle ich Java-Projektmanagement-Tools beim Erlernen von Back-End-Entwicklung aus? Wie wähle ich Java-Projektmanagement-Tools beim Erlernen von Back-End-Entwicklung aus? Apr 19, 2025 pm 02:15 PM

Verwechselt mit der Auswahl von Java -Projektmanagement -Tools für Anfänger. Für diejenigen, die gerade erst anfangen, Backend -Entwicklung zu lernen, ist die Auswahl der richtigen Projektmanagement -Tools von entscheidender Bedeutung ...

Wenn Tomcat Spring-Web-Module lädt, zerstört der SPI-Mechanismus dann das Sichtbarkeitsprinzip der Lader der Java-Klasse? Wenn Tomcat Spring-Web-Module lädt, zerstört der SPI-Mechanismus dann das Sichtbarkeitsprinzip der Lader der Java-Klasse? Apr 19, 2025 pm 02:18 PM

Analyse des Klassenbelastungsverhaltens des SPI-Mechanismus beim Lasten von Feder-Web-Modulen. Tomcat wird verwendet, um den von Spring-Web bereitgestellten Servel beim Laden von Feder-Web-Modulen zu entdecken und zu verwenden ...

Was ist der Grund, warum der Browser nicht reagiert, nachdem der WebSocket -Server 401 zurückgegeben hat? Wie löst ich es? Was ist der Grund, warum der Browser nicht reagiert, nachdem der WebSocket -Server 401 zurückgegeben hat? Wie löst ich es? Apr 19, 2025 pm 02:21 PM

Die nicht reagierende Methode des Browsers, nachdem der WebSocket -Server 401 zurückgegeben hat. Wenn Sie Netty zur Entwicklung eines WebSocket -Servers verwenden, müssen Sie häufig auf das Token überprüft werden. � ...

Endgültige Konsistenz in verteilten Systemen: Wie kann man Daten inkonsistenzen anwenden und diese kompensieren? Endgültige Konsistenz in verteilten Systemen: Wie kann man Daten inkonsistenzen anwenden und diese kompensieren? Apr 19, 2025 pm 02:24 PM

Die Anwendung der endgültigen Konsistenz in verteilten Systemen verteilte Transaktionsverarbeitung war schon immer ein Problem in der verteilten Systemarchitektur. Um das Problem zu lösen ...

Wie kann man den Zugang zu bestimmten Schnittstellen verschachtelter H5 -Seiten durch den Umfangsmechanismus von OAuth2.0 einschränken? Wie kann man den Zugang zu bestimmten Schnittstellen verschachtelter H5 -Seiten durch den Umfangsmechanismus von OAuth2.0 einschränken? Apr 19, 2025 pm 02:30 PM

Wie Verwenden Sie den Occess_Token von OAuth2.0, um die Steuerung der Schnittstellenzugriffsberechtigungen zu erhalten? Wie können Sie bei der Anwendung von OAuth2.0 sicherstellen, dass die ...

Wie unterscheidet man in der Back-End-Entwicklung die Verantwortlichkeiten der Serviceschicht und der DAO-Schicht? Wie unterscheidet man in der Back-End-Entwicklung die Verantwortlichkeiten der Serviceschicht und der DAO-Schicht? Apr 19, 2025 pm 01:51 PM

Erörterung der hierarchischen Architektur in der Back-End-Entwicklung. In der Back-End-Entwicklung ist die hierarchische Architektur ein gemeinsames Designmuster, in der es normalerweise Controller, Service und DAO drei Ebenen ...

Warum meldet es einen Fehler beim Einreichen eines Pyflink -Jobs auf Garn? Warum meldet es einen Fehler beim Einreichen eines Pyflink -Jobs auf Garn? Apr 19, 2025 pm 02:06 PM

Analyse des Grundes, warum das Python -Skript nicht gefunden werden kann, wenn Sie einen Pyflink -Job auf Garn einreichen, wenn Sie versuchen, einen Pyflink -Job über Garn einzureichen. Sie können begegnen ...

See all articles