在基本的 Java 语言中,没有一种方法可以将所有字段的值从一个实例复制到另一个实例。而且您通常不需要它。您通常可以只替换对新实例的引用或直接在目标实例上工作。
在您的情况下,当您想要将对象的所有字段重置为初始值(并且很少需要它)时,您通常使用重置方法,该方法适用于自己的实例,或者是适用于任何给定对象的静态方法.
所以
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() 方法或某种包装/存根。