我只是在查看 List 接口中定义的方法:
以正确的顺序返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果列表适合指定的数组,则在其中返回。否则,将使用指定数组的运行时类型和此列表的大小分配一个新数组。如果列表适合指定的数组并有剩余空间(即,数组的元素多于列表),则数组中紧跟集合末尾的元素设置为空。仅当调用者知道列表不包含任何空元素时,这对于确定列表的长度很有用。
<T> T[] toArray(T[] a);
我只是想知道为什么它是这样实现的,基本上如果你将一个长度为 < 的数组传递给 list.size(),它只会创建一个新数组并返回它。因此在方法参数中创建新的数组对象是没有用的。
此外,如果您使用列表的大小向它传递一个足够长的数组,如果返回与对象相同的对象 - 实际上返回它没有意义,因为它是相同的对象,但为了清楚起见可以。
问题是我认为这会导致代码效率低下,我认为 toArray 应该简单地接收类并返回带有内容的新数组。
有什么理由不这样编码吗?