如何在Java中重置当前对象?

use*_*990 6 java object this reset

如果我有一个类型为Foo的对象myObject,而在myObject中,有没有办法重置自己并再次运行构造函数?

我知道以下内容不起作用,但可能有助于表达这一想法.

this = new Foo();
Run Code Online (Sandbox Code Playgroud)

das*_*ght 14

无法在现有实例上再次运行构造函数.但是,您可以组织代码,以便以最少的工作量重置,如下所示:

public class MyClass {
    public MyClass() {
        reset();
    }
    public void reset() {
        // Setup the instance
        this.field1 = ...
        this.field2 = ...
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:您的reset方法需要设置所有字段,而不仅仅是您通常在构造函数中设置的字段.例如,您的构造函数可以依赖于引用字段的默认初始化null和数字字段为零; 您的reset方法需要明确地设置它们.


小智 6

最好设置null或使用新的Object()

obj = null;
   or
obj = new Object();
Run Code Online (Sandbox Code Playgroud)

垃圾收集器最终会清除对象


tal*_*las 1

只需编写一个方法来“重置”对象的所有变量(null 或 0 或默认值)。