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

同時実行を使用している場合、最初の質問は、リセット メソッドがアトミックであるかどうか (ロックで同期されているか、またはthis既定のsynchronizedメソッド修飾子を使用してオブジェクトで同期されているか) ですか? 単純なシングルスレッド プログラムの場合、オブジェクトのインスタンス変数を既存のオブジェクトではなく、新しいオブジェクト自体 (プリミティブでない場合) に「リセット」していると確信していますか? 最後になりましたが、リセットでは、再初期化する前に値を null (yourObjToRest=null;) に設定してみてください。

編集:より具体的な答えを得るには、いくつかのコードが役立ちます。

于 2013-10-20T03:00:13.623 に答える