8203184: List.copyOf() fails to copy sublists

Reviewed-by: psandoz
This commit is contained in:
Stuart Marks 2018-06-21 08:45:57 -07:00
parent 693a6dd27a
commit 277b35da28
3 changed files with 30 additions and 7 deletions

View file

@ -83,6 +83,16 @@ class ImmutableCollections {
// ---------- List Implementations ----------
// make a copy, short-circuiting based on implementation class
@SuppressWarnings("unchecked")
static <E> List<E> listCopy(Collection<? extends E> coll) {
if (coll instanceof AbstractImmutableList && coll.getClass() != SubList.class) {
return (List<E>)coll;
} else {
return (List<E>)List.of(coll.toArray());
}
}
@SuppressWarnings("unchecked")
static <E> List<E> emptyList() {
return (List<E>) ListN.EMPTY_LIST;