Javaでオブジェクトデータを交換するにはどうすればよいですか? (コード例)

藏色散人
リリース: 2019-03-19 11:52:48
オリジナル
4836 人が閲覧しました

いくつかのプロパティを持つ「Car」というクラスがあるとします。 Car の 2 つのオブジェクト、car1 と car2 を作成しました。car1 と car2 のデータを交換するにはどうすればよいですか?

Javaでオブジェクトデータを交換するにはどうすればよいですか? (コード例)

簡単な解決策は、メンバーを交換することです。たとえば、クラス Car に整数属性「no」(車番号) が 1 つだけある場合、2 台の車のメンバーを交換するだけで車を交換できます。

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 にメンバーがいることがわかっているため、上記の解決策は有効です。車は「いいえ」。 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 チュートリアル "

この記事は、Java でオブジェクトを交換する方法の紹介です。困っている友人の役に立てば幸いです。

以上がJavaでオブジェクトデータを交換するにはどうすればよいですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート