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

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

Mar 19, 2019 am 11:52 AM

일부 속성을 가진 "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)