8221981: Simplify Map/List/Set.of() implementation
Reviewed-by: smarks
This commit is contained in:
parent
3233a6f944
commit
15d989faa4
@ -95,11 +95,6 @@ class ImmutableCollections {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
static <E> List<E> emptyList() {
|
|
||||||
return (List<E>) ListN.EMPTY_LIST;
|
|
||||||
}
|
|
||||||
|
|
||||||
static abstract class AbstractImmutableList<E> extends AbstractImmutableCollection<E>
|
static abstract class AbstractImmutableList<E> extends AbstractImmutableCollection<E>
|
||||||
implements List<E>, RandomAccess {
|
implements List<E>, RandomAccess {
|
||||||
|
|
||||||
@ -556,11 +551,6 @@ class ImmutableCollections {
|
|||||||
public abstract int hashCode();
|
public abstract int hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
static <E> Set<E> emptySet() {
|
|
||||||
return (Set<E>) SetN.EMPTY_SET;
|
|
||||||
}
|
|
||||||
|
|
||||||
static final class Set12<E> extends AbstractImmutableSet<E>
|
static final class Set12<E> extends AbstractImmutableSet<E>
|
||||||
implements Serializable {
|
implements Serializable {
|
||||||
|
|
||||||
@ -844,11 +834,6 @@ class ImmutableCollections {
|
|||||||
|
|
||||||
// ---------- Map Implementations ----------
|
// ---------- Map Implementations ----------
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
static <K,V> Map<K,V> emptyMap() {
|
|
||||||
return (Map<K,V>) MapN.EMPTY_MAP;
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract static class AbstractImmutableMap<K,V> extends AbstractMap<K,V> implements Serializable {
|
abstract static class AbstractImmutableMap<K,V> extends AbstractMap<K,V> implements Serializable {
|
||||||
@Override public void clear() { throw uoe(); }
|
@Override public void clear() { throw uoe(); }
|
||||||
@Override public V compute(K key, BiFunction<? super K,? super V,? extends V> rf) { throw uoe(); }
|
@Override public V compute(K key, BiFunction<? super K,? super V,? extends V> rf) { throw uoe(); }
|
||||||
@ -1248,7 +1233,7 @@ final class CollSer implements Serializable {
|
|||||||
return Set.of(array);
|
return Set.of(array);
|
||||||
case IMM_MAP:
|
case IMM_MAP:
|
||||||
if (array.length == 0) {
|
if (array.length == 0) {
|
||||||
return ImmutableCollections.emptyMap();
|
return ImmutableCollections.MapN.EMPTY_MAP;
|
||||||
} else if (array.length == 2) {
|
} else if (array.length == 2) {
|
||||||
return new ImmutableCollections.Map1<>(array[0], array[1]);
|
return new ImmutableCollections.Map1<>(array[0], array[1]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -787,8 +787,9 @@ public interface List<E> extends Collection<E> {
|
|||||||
*
|
*
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
static <E> List<E> of() {
|
static <E> List<E> of() {
|
||||||
return ImmutableCollections.emptyList();
|
return (List<E>) ImmutableCollections.ListN.EMPTY_LIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1031,7 +1032,9 @@ public interface List<E> extends Collection<E> {
|
|||||||
static <E> List<E> of(E... elements) {
|
static <E> List<E> of(E... elements) {
|
||||||
switch (elements.length) { // implicit null check of elements
|
switch (elements.length) { // implicit null check of elements
|
||||||
case 0:
|
case 0:
|
||||||
return ImmutableCollections.emptyList();
|
@SuppressWarnings("unchecked")
|
||||||
|
var list = (List<E>) ImmutableCollections.ListN.EMPTY_LIST;
|
||||||
|
return list;
|
||||||
case 1:
|
case 1:
|
||||||
return new ImmutableCollections.List12<>(elements[0]);
|
return new ImmutableCollections.List12<>(elements[0]);
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -1286,8 +1286,9 @@ public interface Map<K, V> {
|
|||||||
*
|
*
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
static <K, V> Map<K, V> of() {
|
static <K, V> Map<K, V> of() {
|
||||||
return ImmutableCollections.emptyMap();
|
return (Map<K,V>) ImmutableCollections.MapN.EMPTY_MAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1604,7 +1605,9 @@ public interface Map<K, V> {
|
|||||||
@SuppressWarnings("varargs")
|
@SuppressWarnings("varargs")
|
||||||
static <K, V> Map<K, V> ofEntries(Entry<? extends K, ? extends V>... entries) {
|
static <K, V> Map<K, V> ofEntries(Entry<? extends K, ? extends V>... entries) {
|
||||||
if (entries.length == 0) { // implicit null check of entries array
|
if (entries.length == 0) { // implicit null check of entries array
|
||||||
return ImmutableCollections.emptyMap();
|
@SuppressWarnings("unchecked")
|
||||||
|
var map = (Map<K,V>) ImmutableCollections.MapN.EMPTY_MAP;
|
||||||
|
return map;
|
||||||
} else if (entries.length == 1) {
|
} else if (entries.length == 1) {
|
||||||
// implicit null check of the array slot
|
// implicit null check of the array slot
|
||||||
return new ImmutableCollections.Map1<>(entries[0].getKey(),
|
return new ImmutableCollections.Map1<>(entries[0].getKey(),
|
||||||
|
@ -448,8 +448,9 @@ public interface Set<E> extends Collection<E> {
|
|||||||
*
|
*
|
||||||
* @since 9
|
* @since 9
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
static <E> Set<E> of() {
|
static <E> Set<E> of() {
|
||||||
return ImmutableCollections.emptySet();
|
return (Set<E>) ImmutableCollections.SetN.EMPTY_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -692,7 +693,9 @@ public interface Set<E> extends Collection<E> {
|
|||||||
static <E> Set<E> of(E... elements) {
|
static <E> Set<E> of(E... elements) {
|
||||||
switch (elements.length) { // implicit null check of elements
|
switch (elements.length) { // implicit null check of elements
|
||||||
case 0:
|
case 0:
|
||||||
return ImmutableCollections.emptySet();
|
@SuppressWarnings("unchecked")
|
||||||
|
var set = (Set<E>) ImmutableCollections.SetN.EMPTY_SET;
|
||||||
|
return set;
|
||||||
case 1:
|
case 1:
|
||||||
return new ImmutableCollections.Set12<>(elements[0]);
|
return new ImmutableCollections.Set12<>(elements[0]);
|
||||||
case 2:
|
case 2:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user