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 、 List 引用和 List 实例存储在内存中的什么位置?它不能在堆栈上.. 那么在哪里?在这种情况下如何处理引用和原语有区别吗?

非常感谢,蒂姆 P。

4

1 回答 1

4

使用的最终局部变量(和任何外部this引用)在构造期间被复制到内部类的合成字段。与往常一样,引用和原语的处理方式相同。两者都是(浅)复制的。

您可以使用javapJDK 来查看正在生成的内容。

于 2010-04-23T14:33:40.443 回答