Interface TypeToInstanceMap<B extends @Nullable Object>

Type Parameters:
B - the common supertype that all entries must share; often this is simply Object
All Superinterfaces:
Map<TypeToken<? extends @NonNull B>,B>
All Known Implementing Classes:
ImmutableTypeToInstanceMap, MutableTypeToInstanceMap

@DoNotMock("Use ImmutableTypeToInstanceMap or MutableTypeToInstanceMap") public interface TypeToInstanceMap<B extends @Nullable Object> extends Map<TypeToken<? extends @NonNull B>,B>
A map, each entry of which maps a TypeToken to an instance of that type. In addition to implementing Map, the additional type-safe operations putInstance(java.lang.Class<T>, T) and getInstance(java.lang.Class<T>) are available.

Generally, implementations don't support Map.put(K, V) and Map.putAll(java.util.Map<? extends K, ? extends V>) because there is no way to check an object at runtime to be an instance of a TypeToken. Instead, caller should use the type safe putInstance(java.lang.Class<T>, T).

Also, if caller suppresses unchecked warnings and passes in an Iterable<String> for type Iterable<Integer>, the map won't be able to detect and throw type error.

Like any other Map<Class, Object>, this map may contain entries for primitive types, and a primitive type and its corresponding wrapper type may map to different values.

Since:
13.0
Author:
Ben Yu
  • Method Details

    • getInstance

      <T extends @NonNull B> @Nullable T getInstance(Class<T> type)
      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)).

    • getInstance

      <T extends @NonNull B> @Nullable T getInstance(TypeToken<T> type)
      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.
    • putInstance

      @CanIgnoreReturnValue <T extends B> @Nullable T putInstance(Class<@NonNull T> type, T value)
      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).

      Returns:
      the value previously associated with this class (possibly null), or null if there was no previous entry.
    • putInstance

      @CanIgnoreReturnValue <T extends B> @Nullable T putInstance(TypeToken<@NonNull T> type, T value)
      Maps the specified type to the specified value. Does not associate this value with any of the type's supertypes.
      Returns:
      the value previously associated with this type (possibly null), or null if there was no previous entry.