aboutsummaryrefslogtreecommitdiff
path: root/guava/src/com/google/common/collect/ImmutableEnumSet.java
diff options
context:
space:
mode:
Diffstat (limited to 'guava/src/com/google/common/collect/ImmutableEnumSet.java')
-rw-r--r--guava/src/com/google/common/collect/ImmutableEnumSet.java15
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;