| 34 | @SuppressWarnings("serial") // we're overriding default serialization |
| 35 | final class ImmutableEnumMap<K extends Enum<K>, V> extends IteratorBasedImmutableMap<K, V> { |
| 36 | static <K extends Enum<K>, V> ImmutableMap<K, V> asImmutable(EnumMap<K, V> map) { |
| 37 | switch (map.size()) { |
| 38 | case 0: |
| 39 | return ImmutableMap.of(); |
| 40 | case 1: |
| 41 | Entry<K, V> entry = Iterables.getOnlyElement(map.entrySet()); |
| 42 | return ImmutableMap.of(entry.getKey(), entry.getValue()); |
| 43 | default: |
| 44 | return new ImmutableEnumMap<K, V>(map); |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | private final transient EnumMap<K, V> delegate; |
| 49 | private ImmutableEnumMap(EnumMap<K, V> delegate) { |