java.util.Arrays中的私有静态类ArrayList – 为什么?
在
java.util.
Arrays中有一个名为“ArrayList”的私有静态类.
它只是从Arrays.asList方法引用. 这样做的好处是什么? 代码如下: /** * @serial include */ private static class ArrayList<E> extends AbstractList<E> implements RandomAccess,java.io.Serializable 解决方法
一个原因是实际实现类不是公共API细节.这样做意味着他们可以在将来更改实施类,而不会有破坏客户代码的风险. 这样做的另一个原因是这个私有类对ArrayList实现了一些不同的操作.特别是涉及更改列表大小的操作需要实现以引发异常,以便符合Arrays.asList(…)方法的javadocs中指定的行为. 实际上,Arrays.asList(…)返回的列表是原始数组的包装器,而不是一个完整的功能列表.这有优点和缺点: >在下行方面,某些操作不起作用. 另外,存在通过包装器(或反之亦然)可以看到原始数组的更改的问题,如果这是您所需要的,则可能会很有用. 你在这个评论中问过:
因为返回常规可调整列表需要在某个时候复制数组内容…这是昂贵的. (如果执行延迟复制,直到执行大小更改操作,原始数组和列表之间的关系将很难理解,请考虑…)
那没有任何事情.您仍然必须将数组内容复制到ArrayList.这个“奇怪”行为规范的全部要点是避免复制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |