我试图通过将有问题的对象"重新初始化"为新对象来创建重置方法。正在发生的事情是,根据构造函数,存储在对象中的某些值正在重置,但有些值则没有。谁能解释一下?
public void reset(){
if(gameHasEnded){
dicaprio = new CoolCat();
}
}
以上是我的重置方法的示例,用于重置以下对象:
public CoolCat(){
area = LEO_START_AREA; //rectangle object
speed = 2 + (int)(5*Math.random());
direction = RIGHT;
}
- 方向和速度似乎被重置,但该区域没有
如果您使用的是并发性,那么第一个问题是要问的是您的重置方法是原子的(在某些锁上同步this
还是在对象上,使用默认的synchronized
方法修饰符)?如果它是一个简单的单线程程序,那么你确定你正在将对象的实例变量"重置"为新对象本身(如果它们不是原语),而不是现有的对象?最后但并非最不重要的一点是,在您的重置中,只需尝试将值设置为 null(yourObjToRest=null;)在重新初始化它们之前。
编辑:一些代码将有助于给出更具体的答案。
我改变了
public CoolCat(){
area = LEO_START_AREA;
自
public CoolCat(){
area = new Rectangle(LEO_START_AREA);
这完全解决了问题。