How to exchange object data in Java? (code example)
Mar 19, 2019 am 11:52 AMSuppose we have a class called "Car" which has some properties. We have created two objects of Car, car1 and car2. How to exchange the data of car1 and car2?
A simple solution is to exchange the members. For example, if the class Car has only one integer attribute "no" (Car number), we can swap the cars by simply swapping the members of the two cars.
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); } }
Output:
c1.no = 2 c2.no = 1
What if we don’t know the members of Car?
The above solution is valid because we know there is a member in Car "no". What if we don't know the members of Car or the member list is too large. This is a very common situation because the class using the other class may not have access to the members of the other class. Does the solution below work?
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(); } }
Output:
no = 1, model = 101 no = 2, model = 202
From the above output we can see that there is no exchange of objects. Parameters are passed by value in Java. So when we pass c1 and c2 to swap(), the swap() function creates copies of these references.
The solution is to use the Wrapper class. If we create a wrapper class that contains a Car reference, we can swap the Car by swapping the reference of the Wrapper class.
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(); } }
Output:
no = 2, model = 202 no = 1, model = 101
Therefore, even if the user class cannot access the members of the class where the object is being swapped, the Wrapper class solution still works.
Related recommendations: "Java Tutorial"
This article is an introduction to the method of exchanging objects in Java. I hope it will be helpful to friends in need!
The above is the detailed content of How to exchange object data in Java? (code example). For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Top 4 JavaScript Frameworks in 2025: React, Angular, Vue, Svelte

Node.js 20: Key Performance Boosts and New Features

How does Java's classloading mechanism work, including different classloaders and their delegation models?

Spring Boot SnakeYAML 2.0 CVE-2022-1471 Issue Fixed

Iceberg: The Future of Data Lake Tables

How can I use JPA (Java Persistence API) for object-relational mapping with advanced features like caching and lazy loading?

How do I implement multi-level caching in Java applications using libraries like Caffeine or Guava Cache?

How do I use Maven or Gradle for advanced Java project management, build automation, and dependency resolution?
