いくつかのプロパティを持つ「Car」というクラスがあるとします。 Car の 2 つのオブジェクト、car1 と car2 を作成しました。car1 と car2 のデータを交換するにはどうすればよいですか?
簡単な解決策は、メンバーを交換することです。たとえば、クラス 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 サイトの他の関連記事を参照してください。