4

次のコードがどのように機能するかを誰かが説明できるかどうか疑問に思いました。

public interface Result {
  public int getCount();
  public List<Thing> getThings();
}


class SomeClass {
...
  public Result getThingResult() {
    final List<Thing> things = .. populated from something.

    final int count = 5;

    return new Result {
      @Override
      public int getCount() {
        return count;
      }

      @Override
      public List<Thing> getThings();
        return things;
      }
    }
  }
...
}

プリミティブint、リスト参照、リストインスタンスはメモリのどこに保存されますか?スタックに入れることはできません。この状況での参照とプリミティブの処理方法に違いはありますか?

たくさんありがとう、ティムP。

4

1 に答える 1

4

使用された最終ローカル(および外部this参照)は、構築中に内部クラスの合成フィールドにコピーされます。参照とプリミティブは、いつものように、同じように扱われます。両方とも(浅い)コピーされます。

JDKから使用javapして、何が生成されているかを確認できます。

于 2010-04-23T14:33:40.443 に答える