2 回答
TA贡献1853条经验 获得超9个赞
现在我需要销毁“Shepherd”类来结束代理,然后开始一个新游戏。我知道java类有析构函数。
你误解了一些相当基本的东西:
Java 没有析构函数。你可能会混淆析构函数和终结函数。这些是在 GC 决定删除对象后调用的方法。(这是一个过度简化......但真正的问题是终结器与这个问题无关。事实上,终结器相关的情况很少。)
你不能破坏物体。当不再需要对象时,垃圾收集器会销毁它们。更具体地说,它们在无法访问时被销毁;即当它们不再影响程序的执行时。
所以你会怎么做?
首先,忘记“破坏”对象。而是考虑如何为下一场比赛做准备。有两种方法。
您可以
reset()
在开始新游戏时需要重置/重新初始化的所有“游戏”对象上实现一个或类似的方法。您可以简单地将所有相关的“游戏”对象放在地板上并创建新对象。(GC 会处理垃圾。)
或者您可以结合使用这两种方法;例如,将Pasture
对象重置为其初始状态并丢弃/重新创建Shepard
,Sheep
等等。
TA贡献1884条经验 获得超4个赞
Java 中没有可以编程或调用的析构函数。要告诉垃圾收集器您不再使用对象,您可以将其设置为 null
myObject = null;
如果您有一些需要关闭/释放的资源,您当然可以创建自己的 destruct 方法,但您必须手动调用它
myObject.closeResources();
myObject = null;
或者,如果你想重用一个对象,你可以有一个重置方法,将对象设置为与它首次创建时相同的状态,你可以让你的构造函数调用相同的方法,然后手动执行。
public class MyClass {
public MyClass() {
this.reset();
}
}
MyClass myObject = new MyClass();
...
myObject.reset();
添加回答
举报