【发布时间】:2019-03-24 09:43:40
【问题描述】:
如果我有以下情况:
List<String> list = new ArrayList<>(Arrays.asList("a","b","c"));
然后调用:
System.out.println(list.size());
它将按预期打印 3。
size() 方法的代码就是return size;,其中size 是private int。
所以我想知道 size 变量的实际设置位置。
我看到它正在调用构造函数public ArrayList(Collection<? extends E> c),这很好,但是当我调试到那里并将鼠标悬停在c 上时,它已经显示size = 3。
那么是Collection<? extends E> c 中的某些东西将其设置为3,在它到达ArrayList 构造函数之前?
【问题讨论】:
-
c == 3是什么意思?这是一个集合,而不是一个 int。 -
哇,大量反对票。 @MuratKaragöz 当我调试该构造函数并将鼠标悬停在
c上时,它显示size = 3。我认为这是一个有效的问题。 -
哇,强烈反对 - 也强烈赞成。对于您只需查看来源即可回答的问题,我会满足于 0 的余额
-
@achAmháin 也许某些 IDE 功能让您感到困惑?类似于我在答案中发布的图像。它不时发生在我身上;)