> Java > java지도 시간 > Java에서 객체 데이터를 교환하는 방법은 무엇입니까? (코드 예)

Java에서 객체 데이터를 교환하는 방법은 무엇입니까? (코드 예)

藏色散人
풀어 주다: 2019-03-19 11:52:48
원래의
4854명이 탐색했습니다.

일부 속성을 가진 "Car"라는 클래스가 있다고 가정해 보겠습니다. Car1과 car2라는 두 개의 객체를 생성했습니다. car1과 car2의 데이터를 교환하는 방법은 무엇입니까?

Java에서 객체 데이터를 교환하는 방법은 무엇입니까? (코드 예)

간단한 해결책은 멤버를 교환하는 것입니다. 예를 들어 Car 클래스에 정수 속성 "no"(자동차 번호)가 하나만 있는 경우 두 자동차의 멤버를 간단히 교체하여 자동차를 교체할 수 있습니다.

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); 
    } 
}
로그인 후 복사

출력:

c1.no = 2
c2.no = 1
로그인 후 복사

Car의 멤버를 모른다면 어떨까요?

Car에 "no" 멤버가 있다는 것을 알기 때문에 위의 솔루션이 작동합니다. Car의 멤버를 모르거나 멤버 목록이 너무 많으면 어떻게 되나요? 이는 다른 클래스를 사용하는 클래스가 다른 클래스의 멤버에 액세스할 수 없기 때문에 매우 일반적인 상황입니다. 아래 솔루션이 작동합니까?

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(); 
    } 
}
로그인 후 복사

출력:

no = 1, model = 101
no = 2, model = 202
로그인 후 복사

위 출력에서 ​​객체 교환이 없음을 알 수 있습니다. 매개변수는 Java에서 값으로 전달됩니다. 따라서 c1과 c2를 swap()에 전달하면 swap() 함수는 이러한 참조의 복사본을 만듭니다.

해결책은 Wrapper 클래스를 사용하는 것입니다. Car에 대한 참조가 포함된 래퍼 클래스를 만드는 경우 Wrapper 클래스의 참조를 교체하여 Car를 교체할 수 있습니다.

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(); 
    } 
}
로그인 후 복사

출력:

no = 2, model = 202
no = 1, model = 101
로그인 후 복사

따라서 사용자 클래스가 객체를 교환하려는 클래스의 멤버에 액세스할 수 없는 경우에도 Wrapper 클래스 솔루션은 계속 작동합니다.

관련 추천: "Java Tutorial"

이 글은 Java에서 객체를 교환하는 방법에 대한 소개입니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

위 내용은 Java에서 객체 데이터를 교환하는 방법은 무엇입니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿