基本上,我想将对象重置为默认状态。 我想到以下几点:
// first declaration
Object a = new Object();
/*
some job over object
*/
//assign a new object to reset it
a= new Object();
另一个想法是在对象类中创建方法,它将设置所需的值,所以
a.reset();
是否有一些默认方式可以做到这一点,或者有没有人有更好的想法?
答案 0 :(得分: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
应该怎么做?
这需要根据具体情况加以考虑,而且你可以使用的不变性越多越好 - 但默认情况下没有提供,没有。
答案 1 :(得分:0)
创建a.reset()
方法是最好的。
除非你这么说,否则你不能指望编译器知道你想要恢复对象的状态。
答案 2 :(得分:0)
如果在别处保留引用,重置对象可能会导致问题。
Foo a=new Foo();
a.something();
Foo b=a;
a.reset();
//b is now reset!
你可以简单地说a=new Foo()
(或对象等),如果在其他地方没有强烈引用,旧的对象就会被处理掉。
答案 3 :(得分: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