List<Integer> list = List.of(12, 34, 56);
Integer[] array = list.toArray(new Integer[]{1, 2, 1, 43, 32, 1});
System.out.println(Arrays.toString(array));
输出: [12, 34, 56, null, 32, 1]
不应该是: [12, 34, 56, null, null, null]
吗?
这是为什么?
版本:GraalVM for JDK 17
看一下toArray方法的源码文档:
意思就是如果数组的元素比列表多,数组中紧跟在列表末尾后面那一位置的元素设置为null,
如果调用者知道列表不包含任何null元素的情况下,方便推断得出列表的真实长度
以ArrayList为例,它的实现如下:
你题目里这个of生成的应该是一个UnmodifiableList? 它的实现也差不多,总之也是只把紧跟着列表后面的那个元素置为null: