我试图通过将相关对象“重新初始化”为新对象来创建重置方法。发生的事情是,根据构造函数重置存储在对象中的一些值,但有些值不是。谁能解释一下呢?
public void reset(){
if(gameHasEnded){
dicaprio = new CoolCat();
}
}
上面是我重置方法的示例,用于重置下面的对象:
public CoolCat(){
area = LEO_START_AREA; //rectangle object
speed = 2 + (int)(5*Math.random());
direction = RIGHT;
}
答案 0 :(得分:0)
如果您正在使用并发,那么第一个问题是使用默认的this
方法修饰符来询问您的重置方法是否为原子(在某个锁上同步?或在synchronized
对象上同步)?如果它是一个简单的单线程程序,那么您确定要将对象的实例变量“重置”为新对象本身(如果它们不是原始对象),而不是现有对象吗?最后但并非最不重要的是,在重置时,只需尝试将值设置为null(yourObjToRest = null;),然后重新初始化它们。
编辑:一些代码有助于提供更具体的答案。
答案 1 :(得分:0)
我改变了
public CoolCat(){
area = LEO_START_AREA;
到
public CoolCat(){
area = new Rectangle(LEO_START_AREA);
这完全解决了这个问题。