![](/img/trans.png)
[英]Why does Arrays.asList on an int[] return a List<int[]>, and not a List<int>?
[英]Why does Arrays.asList return a fixed-size List?
Arrays.asList
是一个有用且方便的方法,但它返回一个大小固定的List
,这样就不能通过添加或删除add
或remove
任何元素(抛出UnsupportedOperationException
)。
这有充分的理由吗? 这看起来像是一个奇怪的限制。
文档没有解释其背后的原因:
返回由指定数组支持的固定大小的列表。
关键是Arrays.asList
返回一个数组视图 ,对数组的更改反映在List
,反之亦然。 它不是一个副本,它只是List
接口的一个非常简单的实现,它将指定的数组解释为List
。 因此, Arrays.asList
实际上只反映了Java数组也是固定大小的。 您也无法在支持数组中添加或删除元素。
正如评论中所提到的,从数组中获取可变大小的列表非常容易,例如new ArrayList<>(Arrays.asList(array))
。
另外,对于它的价值:Guava实际上后悔在发现大多数使用它的人确实想要一个不可变列表之后提供“来自varargs参数的可调整大小的列表”方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.