Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2009 The Guava Authors
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package com.google.common.collect;
 
 
Implementation of ImmutableSet backed by a non-empty java.util.EnumSet.

Author(s):
Jared Levy
 
 @GwtCompatible(serializable = true, emulated = true)
 @SuppressWarnings("serial"// we're overriding default serialization
 final class ImmutableEnumSet<E extends Enum<E>> extends ImmutableSet<E> {
   /*
    * Notes on EnumSet and <E extends Enum<E>>:
    *
    * This class isn't an arbitrary ForwardingImmutableSet because we need to
    * know that calling {@code clone()} during deserialization will return an
    * object that no one else has a reference to, allowing us to guarantee
    * immutability. Hence, we support only {@link EnumSet}.
    */
   private final transient EnumSet<E> delegate;
 
   ImmutableEnumSet(EnumSet<E> delegate) {
     this. = delegate;
   }
 
   @Override boolean isPartialView() {
     return false;
   }
 
   @Override public UnmodifiableIterator<E> iterator() {
     return Iterators.unmodifiableIterator(.iterator());
   }
 
   @Override
   public int size() {
     return .size();
   }
 
   @Override public boolean contains(Object object) {
     return .contains(object);
   }
 
   @Override public boolean containsAll(Collection<?> collection) {
     return .containsAll(collection);
   }
 
   @Override public boolean isEmpty() {
     return .isEmpty();
   }
 
   @Override public Object[] toArray() {
     return .toArray();
   }
 
   @Override public <T> T[] toArray(T[] array) {
     return .toArray(array);
   }
 
   @Override public boolean equals(Object object) {
     return object == this || .equals(object);
   }
 
   private transient int hashCode;
 
   @Override public int hashCode() {
     int result = ;
     return (result == 0) ?  = .hashCode() : result;
   }
 
   @Override public String toString() {
     return .toString();
   }
 
   // All callers of the constructor are restricted to <E extends Enum<E>>.
     return new EnumSerializedForm<E>();
   }
  /*
   * This class is used to serialize ImmutableEnumSet instances.
   */
  private static class EnumSerializedForm<E extends Enum<E>>
      implements Serializable {
    final EnumSet<E> delegate;
    EnumSerializedForm(EnumSet<E> delegate) {
      this. = delegate;
    }
    Object readResolve() {
      // EJ2 #76: Write readObject() methods defensively.
      return new ImmutableEnumSet<E>(.clone());
    }
    private static final long serialVersionUID = 0;
  }
New to GrepCode? Check out our FAQ X