diff options
Diffstat (limited to 'guava/src/com/google/common/collect/ImmutableEnumSet.java')
-rw-r--r-- | guava/src/com/google/common/collect/ImmutableEnumSet.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/guava/src/com/google/common/collect/ImmutableEnumSet.java b/guava/src/com/google/common/collect/ImmutableEnumSet.java index 32287bdd2..5488039af 100644 --- a/guava/src/com/google/common/collect/ImmutableEnumSet.java +++ b/guava/src/com/google/common/collect/ImmutableEnumSet.java @@ -17,7 +17,10 @@ package com.google.common.collect; import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.J2ktIncompatible; import com.google.errorprone.annotations.concurrent.LazyInit; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.util.Collection; import java.util.EnumSet; @@ -34,15 +37,14 @@ import javax.annotation.CheckForNull; @SuppressWarnings("serial") // we're overriding default serialization @ElementTypesAreNonnullByDefault final class ImmutableEnumSet<E extends Enum<E>> extends ImmutableSet<E> { - @SuppressWarnings("rawtypes") // necessary to compile against Java 8 - static ImmutableSet asImmutable(EnumSet set) { + static <E extends Enum<E>> ImmutableSet<E> asImmutable(EnumSet<E> set) { switch (set.size()) { case 0: return ImmutableSet.of(); case 1: return ImmutableSet.of(Iterables.getOnlyElement(set)); default: - return new ImmutableEnumSet(set); + return new ImmutableEnumSet<E>(set); } } @@ -134,13 +136,20 @@ final class ImmutableEnumSet<E extends Enum<E>> extends ImmutableSet<E> { // All callers of the constructor are restricted to <E extends Enum<E>>. @Override + @J2ktIncompatible // serialization Object writeReplace() { return new EnumSerializedForm<E>(delegate); } + @J2ktIncompatible // serialization + private void readObject(ObjectInputStream stream) throws InvalidObjectException { + throw new InvalidObjectException("Use SerializedForm"); + } + /* * This class is used to serialize ImmutableEnumSet instances. */ + @J2ktIncompatible // serialization private static class EnumSerializedForm<E extends Enum<E>> implements Serializable { final EnumSet<E> delegate; |