0

我试图通过将相关对象“重新初始化”为新对象来创建重置方法。正在发生的事情是,存储在对象中的一些值正在被重置,根据构造函数,但有些没有。谁能解释一下?

  public void reset(){
    if(gameHasEnded){
      dicaprio = new CoolCat();
    }  
  }

以上是我重置以下对象的重置方法的示例:

 public CoolCat(){
    area = LEO_START_AREA;  //rectangle object

    speed = 2 + (int)(5*Math.random());

    direction = RIGHT;     
  }
  • 方向和速度似乎已重置,但该区域没有
4

2 回答 2

0

我变了

public CoolCat(){
    area = LEO_START_AREA;

 public CoolCat(){
    area = new Rectangle(LEO_START_AREA); 

这完全解决了这个问题。

于 2013-10-20T05:19:17.603 回答
0

如果您使用并发,那么第一个问题是询问您的重置方法是否是原子的(在某个锁上同步?或在this对象上,使用默认synchronized方法修饰符)?如果它是一个简单的单线程程序,那么您确定您正在将对象的实例变量“重置”为新对象本身(如果它们不是原始对象),而不是现有对象?最后但并非最不重要的一点是,在您的重置中,只需在重新初始化它们之前尝试将值设置为 null (yourObjToRest=null;)。

编辑:一些代码将有助于给出更具体的答案。

于 2013-10-20T03:00:13.623 回答