如果我有一个类型为Foo的对象myObject,而在myObject中,有没有办法重置自己并再次运行构造函数?
我知道以下内容不起作用,但可能有助于表达这一想法.
this = new Foo();
dasblinkenli.. 14
无法在现有实例上再次运行构造函数.但是,您可以组织代码,以便以最少的工作量重置,如下所示:
public class MyClass { public MyClass() { reset(); } public void reset() { // Setup the instance this.field1 = ... this.field2 = ... } }
注意:您的reset方法需要设置所有字段,而不仅仅是您通常在构造函数中设置的字段.例如,您的构造函数可以依赖于引用字段的默认初始化null
和数字字段为零; 您的reset
方法需要明确地设置它们.
无法在现有实例上再次运行构造函数.但是,您可以组织代码,以便以最少的工作量重置,如下所示:
public class MyClass { public MyClass() { reset(); } public void reset() { // Setup the instance this.field1 = ... this.field2 = ... } }
注意:您的reset方法需要设置所有字段,而不仅仅是您通常在构造函数中设置的字段.例如,您的构造函数可以依赖于引用字段的默认初始化null
和数字字段为零; 您的reset
方法需要明确地设置它们.
最好设置null或使用新的Object()
obj = null; or obj = new Object();
垃圾收集器最终会清除对象