gpt4 book ai didi

java - 为什么ArrayList的非静态内部类SubList有一个成员变量 "parent"?

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:05 26 4
gpt4 key购买 nike

java.util.ArrayList.SubList 是 java.util.ArrayList 的非静态内部类,这意味着它持有对其外围类的引用。我们可以使用 ArrayList.this 访问 java.util.ArrayList 的成员。但是 java.util.ArrayList.SubList 还有一个成员“parent”,它也是对 java.util.ArrayList.SubList 的封闭类的引用。为什么需要“parent”成员变量或者为什么不将 java.util.ArrayList.SubList 声明为静态内部类?

我的jdk是最新的,google了一下java.util.ArrayList的最新源码。我得到以下链接: http://www.docjar.com/html/api/java/util/ArrayList.java.html .页面上的代码和我电脑上的一样。

最佳答案

您在评论中的结论是正确的。 SubList 需要一个 parent 字段,因为 SubList 的子列表使用 SubList 作为父级——封闭ArrayList 在这种情况下不是父级。特别是 ArrayList.SubList.subList() 的来源是:

    public List<E> subList(int fromIndex, int toIndex) {
subListRangeCheck(fromIndex, toIndex, size);
return new SubList(this, offset, fromIndex, toIndex);
}

请注意,this(一个 SubList)作为父参数传递给新的 SubList

如果没有显式的 parent 字段,将无法跟踪它。

关于java - 为什么ArrayList的非静态内部类SubList有一个成员变量 "parent"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com