基本上,我想将对象重置为默认状态。我考虑以下几点:
// first declaration
Object a = new Object();
/*
some job over object
*/
//assign a new object to reset it
a= new Object();
另一个想法是在对象类中创建方法,它将设置所需的值,所以
a.reset();
有没有一些默认的方法可以做到这一点,或者有人有更好的主意吗?
基本上,我想将对象重置为默认状态。我考虑以下几点:
// first declaration
Object a = new Object();
/*
some job over object
*/
//assign a new object to reset it
a= new Object();
另一个想法是在对象类中创建方法,它将设置所需的值,所以
a.reset();
有没有一些默认的方法可以做到这一点,或者有人有更好的主意吗?
是否有一些默认方法可以做到这一点
没有。这是相对棘手的,因为大概你想传递地做它 - 但如果你有一个不同的对象引用一些相同的对象,并且你不想重置它,这可能会导致问题:
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
这需要逐案考虑,并且您可以使用的不变性越多越好 - 但默认情况下没有提供任何内容,不。
创建a.reset()
方法是最好的。
你不能指望编译器知道你想让对象恢复到什么状态,除非你告诉它。
如果您在别处保留引用,则重置对象可能会导致问题。
Foo a=new Foo();
a.something();
Foo b=a;
a.reset();
//b is now reset!
您可以简单地说a=new Foo()
(或对象等),如果在其他地方没有强烈引用,旧对象将被处置。
您可以使用要恢复的状态创建对象的真实副本(使用复制构造函数):
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