基本的なJava言語で、あるインスタンスから別のインスタンスにすべてのフィールドの値をコピーする1つの方法はありません。そして、あなたは通常それを必要とすべきではありません。ほとんどの場合、新しいインスタンスへの参照を置き換えるか、ターゲットインスタンスで直接作業できます。
オブジェクトのすべてのフィールドを初期値にリセットしたい場合(そしてそれが必要になることはめったにありません)、通常、8がそれ自体のインスタンスで機能するか、特定のオブジェクトで機能する静的な方法であるリセットメソッドを使用します。 。
それで
class A {
String a1; int a2;
void reset() { a1 = ""; a2 = 0; }
}
として使用されます
A a = new A();
// modify a
a.reset();
と
class A {
String a1; int a2;
static void reset(A anotherA) { anotherA.a1 = ""; anotherA.a2 = 0; }
}
次のように使用します。
A.reset(a);
どちらの場合も、コンストラクターで初期値を設定するためにもresetメソッドを使用するのが理にかなっています。A() { A.reset(this); }
またはA() { this.reset(); }
1実際には、それを行うためのライブラリがいくつかあり、リフレクションの助けを借りてコーディングできます。これが使用されているのは、clone()メソッドを実装するため、またはある種のラッピング/スタブのためだけです。