Home  >  Article  >  Java  >  How to exchange object data in Java? (code example)

How to exchange object data in Java? (code example)

藏色散人
藏色散人Original
2019-03-19 11:52:484770browse

Suppose 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?

How to exchange object data in Java? (code example)

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn