0

基本上,我想将对象重置为默认状态。我考虑以下几点:

// first declaration
Object a = new Object();
/* 
some job over object
*/
//assign a new object to reset it
a= new Object();

另一个想法是在对象类中创建方法,它将设置所需的值,所以

a.reset();

有没有一些默认的方法可以做到这一点,或者有人有更好的主意吗?

4

4 回答 4

7

是否有一些默认方法可以做到这一点

没有。这是相对棘手的,因为大概你想传递地做它 - 但如果你有一个不同的对象引用一些相同的对象,并且你不想重置它,这可能会导致问题:

Date d = ...;
Foo x = new Foo();
Foo y = new Foo();
x.setDate(d);
y.setDate(d);
d.setTime(d.getTime() + 1000L);
x.reset();

就两个对象中的Date引用而言,这应该怎么做?Foo

这需要逐案考虑,并且您可以使用的不变性越多越好 - 但默认情况下没有提供任何内容,不。

于 2013-09-02T09:18:18.037 回答
0

创建a.reset()方法是最好的。

你不能指望编译器知道你想让对象恢复到什么状态,除非你告诉它。

于 2013-09-02T09:19:10.713 回答
0

如果您在别处保留引用,则重置对象可能会导致问题。

Foo a=new Foo();
a.something();
Foo b=a;
a.reset();
//b is now reset!

您可以简单地说a=new Foo()(或对象等),如果在其他地方没有强烈引用,旧对象将被处置。

于 2013-09-02T09:20:06.017 回答
0

您可以使用要恢复的状态创建对象的真实副本(使用复制构造函数):

Foo a = new Foo();
Foo b = new Foo(a); // b contains the state you want to restore
a.something();      // a is modified
a = b;              // the state of a is restored by b
于 2017-10-12T13:32:34.993 回答