com.google.common.reflect

## Class MutableTypeToInstanceMap<B>

- java.lang.Object
- - com.google.common.collect.ForwardingObject
  - - com.google.common.collect.ForwardingMap<TypeToken<? extends B>,B>
    - - com.google.common.reflect.MutableTypeToInstanceMap<B>

- All Implemented Interfaces:
    TypeToInstanceMap<B>, java.util.Map<TypeToken<? extends B>,B>

      @Beta
      public final class MutableTypeToInstanceMap<B>
      extends ForwardingMap<TypeToken<? extends B>,B>
      implements TypeToInstanceMap<B>

  A mutable type-to-instance map. See also `ImmutableTypeToInstanceMap`.
  Since:
    13.0

- - ### Nested Class Summary

    - ### 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>`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MutableTypeToInstanceMap()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected java.util.Map<TypeToken<? extends B>,B>` | `delegate()` Returns the backing delegate instance that methods are forwarded to.
    `java.util.Set<java.util.Map.Entry<TypeToken<? extends B>,B>>` | `entrySet()`
    `<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.
    `<T extends B> T` | `getInstance(TypeToken<T> type)` Returns the value the specified type is mapped to, or `null` if no entry for this type is present.
    `B` | `put(TypeToken<? extends B> key, B value)` Not supported.
    `void` | `putAll(java.util.Map<? extends TypeToken<? extends B>,? extends B> map)` Not supported.
    `<T extends B> T` | `putInstance(java.lang.Class<T> type, T value)` Maps the specified class to the specified value.
    `<T extends B> T` | `putInstance(TypeToken<T> type, T value)` Maps the specified type to the specified value.

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

      `clear, containsKey, containsValue, equals, get, hashCode, isEmpty, keySet, 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, equals, get, hashCode, isEmpty, keySet, remove, size, values`

- - ### Constructor Detail

    - #### MutableTypeToInstanceMap

          public MutableTypeToInstanceMap()

  - ### Method Detail

    - #### getInstance

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

      Description copied from interface: `TypeToInstanceMap`
      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.

      `getInstance(Foo.class)` is equivalent to `getInstance(TypeToken.of(Foo.class))`.

      Specified by:
        `getInstance` in interface `TypeToInstanceMap<B>`

    - #### putInstance

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

      Description copied from interface: `TypeToInstanceMap`
      Maps the specified class to the specified value. Does not associate this value with any of the class's supertypes.

      `putInstance(Foo.class, foo)` is equivalent to `putInstance(TypeToken.of(Foo.class), foo)`.

      Specified by:
        `putInstance` in interface `TypeToInstanceMap<B>`
      Returns:
        the value previously associated with this class (possibly `null`), or `null` if there was no previous entry.

    - #### getInstance

          @Nullable
          public <T extends B> T getInstance(TypeToken<T> type)

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

    - #### putInstance

          @Nullable
          public <T extends B> T putInstance(TypeToken<T> type,
                                             @Nullable
                                             T value)

      Description copied from interface: `TypeToInstanceMap`
      Maps the specified type to the specified value. Does not associate this value with any of the type's supertypes.
      Specified by:
        `putInstance` in interface `TypeToInstanceMap<B>`
      Returns:
        the value previously associated with this type (possibly `null`), or `null` if there was no previous entry.

    - #### put

          public B put(TypeToken<? extends B> key,
              B value)

      Not supported. Use `putInstance(java.lang.Class<T>, T)` instead.
      Specified by:
        `put` in interface `java.util.Map<TypeToken<? extends B>,B>`
      Overrides:
        `put` in class `ForwardingMap<TypeToken<? extends B>,B>`

    - #### putAll

          public void putAll(java.util.Map<? extends TypeToken<? extends B>,? extends B> map)

      Not supported. Use `putInstance(java.lang.Class<T>, T)` instead.
      Specified by:
        `putAll` in interface `java.util.Map<TypeToken<? extends B>,B>`
      Overrides:
        `putAll` in class `ForwardingMap<TypeToken<? extends B>,B>`

    - #### entrySet

          public java.util.Set<java.util.Map.Entry<TypeToken<? extends B>,B>> entrySet()

      Specified by:
        `entrySet` in interface `java.util.Map<TypeToken<? extends B>,B>`
      Overrides:
        `entrySet` in class `ForwardingMap<TypeToken<? extends B>,B>`

    - #### delegate

          protected java.util.Map<TypeToken<? 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<TypeToken<? extends B>,B>`