com.google.common.collect

## Class ImmutableClassToInstanceMap<B>

- java.lang.Object
- - com.google.common.collect.ForwardingObject
  - - com.google.common.collect.ForwardingMap<java.lang.Class<? extends B>,B>
    - - com.google.common.collect.ImmutableClassToInstanceMap<B>

- All Implemented Interfaces:
    ClassToInstanceMap<B>, java.io.Serializable, java.util.Map<java.lang.Class<? extends B>,B>

      public final class ImmutableClassToInstanceMap<B>
      extends ForwardingMap<java.lang.Class<? extends B>,B>
      implements ClassToInstanceMap<B>, java.io.Serializable

  A `ClassToInstanceMap` whose contents will never change, with many other important properties detailed at `ImmutableCollection`.
  Since:
    2.0
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ImmutableClassToInstanceMap.Builder<B>` A builder for creating immutable class-to-instance maps.

    - ### Nested classes/interfaces inherited from class com.google.common.collect.ForwardingMap

      `ForwardingMap.StandardEntrySet, ForwardingMap.StandardKeySet, ForwardingMap.StandardValues`

    - ### Nested classes/interfaces inherited from interface java.util.Map

      `java.util.Map.Entry<K,V>`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static <B> ImmutableClassToInstanceMap.Builder<B>` | `builder()` Returns a new builder.
    `static <B,S extends B> ImmutableClassToInstanceMap<B>` | `copyOf(java.util.Map<? extends java.lang.Class<? extends S>,? extends S> map)` Returns an immutable map containing the same entries as `map`.
    `protected java.util.Map<java.lang.Class<? extends B>,B>` | `delegate()` Returns the backing delegate instance that methods are forwarded to.
    `<T extends B> T` | `getInstance(java.lang.Class<T> type)` Returns the value the specified class is mapped to, or `null` if no entry for this class is present.
    `static <B> ImmutableClassToInstanceMap<B>` | `of()` Returns an empty `ImmutableClassToInstanceMap`.
    `static <B,T extends B> ImmutableClassToInstanceMap<B>` | `of(java.lang.Class<T> type, T value)` Returns an `ImmutableClassToInstanceMap` containing a single entry.
    `<T extends B> T` | `putInstance(java.lang.Class<T> type, T value)` Deprecated. Unsupported operation.

    - ### Methods inherited from class com.google.common.collect.ForwardingMap

      `clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, standardClear, standardContainsKey, standardContainsValue, standardEquals, standardHashCode, standardIsEmpty, standardPutAll, standardRemove, standardToString, values`

    - ### Methods inherited from class com.google.common.collect.ForwardingObject

      `toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.Map

      `clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values`

- - ### Method Detail

    - #### of

          public static <B> ImmutableClassToInstanceMap<B> of()

      Returns an empty `ImmutableClassToInstanceMap`.
      Since:
        19.0

    - #### of

          public static <B,T extends B> ImmutableClassToInstanceMap<B> of(java.lang.Class<T> type,
                                                          T value)

      Returns an `ImmutableClassToInstanceMap` containing a single entry.
      Since:
        19.0

    - #### builder

          public static <B> ImmutableClassToInstanceMap.Builder<B> builder()

      Returns a new builder. The generated builder is equivalent to the builder created by the `ImmutableClassToInstanceMap.Builder` constructor.

    - #### copyOf

          public static <B,S extends B> ImmutableClassToInstanceMap<B> copyOf(java.util.Map<? extends java.lang.Class<? extends S>,? extends S> map)

      Returns an immutable map containing the same entries as `map`. If `map` somehow contains entries with duplicate keys (for example, if it is a `SortedMap` whose comparator is not consistent with equals), the results of this method are undefined.

      Note: Despite what the method name suggests, if `map` is an `ImmutableClassToInstanceMap`, no copy will actually be performed.

      Throws:
        `java.lang.NullPointerException` - if any key or value in `map` is null
        `java.lang.ClassCastException` - if any value is not an instance of the type specified by its key

    - #### delegate

          protected java.util.Map<java.lang.Class<? extends B>,B> delegate()

      Description copied from class: `ForwardingObject`
      Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such as `ForwardingSet.delegate()`. Concrete subclasses override this method to supply the instance being decorated.
      Specified by:
        `delegate` in class `ForwardingMap<java.lang.Class<? extends B>,B>`

    - #### getInstance

          @Nullable
          public <T extends B> T getInstance(java.lang.Class<T> type)

      Description copied from interface: `ClassToInstanceMap`
      Returns the value the specified class is mapped to, or `null` if no entry for this class is present. This will only return a value that was bound to this specific class, not a value that may have been bound to a subtype.
      Specified by:
        `getInstance` in interface `ClassToInstanceMap<B>`

    - #### putInstance

          @Deprecated
          public <T extends B> T putInstance(java.lang.Class<T> type,
                                               T value)

      Deprecated. Unsupported operation.
      Guaranteed to throw an exception and leave the map unmodified.
      Specified by:
        `putInstance` in interface `ClassToInstanceMap<B>`
      Returns:
        the value previously associated with this class (possibly `null`), or `null` if there was no previous entry.
      Throws:
        `java.lang.UnsupportedOperationException` - always