com.google.common.collect

## Class ImmutableClassToInstanceMap.Builder<B>

- java.lang.Object
- - com.google.common.collect.ImmutableClassToInstanceMap.Builder<B>

- Enclosing class:
    ImmutableClassToInstanceMap<B>

      public static final class ImmutableClassToInstanceMap.Builder<B>
      extends java.lang.Object

  A builder for creating immutable class-to-instance maps. Example:

         static final ImmutableClassToInstanceMap<Handler> HANDLERS =
             new ImmutableClassToInstanceMap.Builder<Handler>()
                 .put(FooHandler.class, new FooHandler())
                 .put(BarHandler.class, new SubBarHandler())
                 .put(Handler.class, new QuuxHandler())
                 .build();

  After invoking `build()` it is still possible to add more entries and build again. Thus each map generated by this builder will be a superset of any map generated before it.

  Since:
    2.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ImmutableClassToInstanceMap.Builder()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ImmutableClassToInstanceMap<B>` | `build()` Returns a new immutable class-to-instance map containing the entries provided to this builder.
    `<T extends B> ImmutableClassToInstanceMap.Builder<B>` | `put(java.lang.Class<T> key, T value)` Associates `key` with `value` in the built map.
    `<T extends B> ImmutableClassToInstanceMap.Builder<B>` | `putAll(java.util.Map<? extends java.lang.Class<? extends T>,? extends T> map)` Associates all of `map's` keys and values in the built map.

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ImmutableClassToInstanceMap.Builder

          public ImmutableClassToInstanceMap.Builder()

  - ### Method Detail

    - #### put

          public <T extends B> ImmutableClassToInstanceMap.Builder<B> put(java.lang.Class<T> key,
                                                                 T value)

      Associates `key` with `value` in the built map. Duplicate keys are not allowed, and will cause `build()` to fail.

    - #### putAll

          public <T extends B> ImmutableClassToInstanceMap.Builder<B> putAll(java.util.Map<? extends java.lang.Class<? extends T>,? extends T> map)

      Associates all of `map's` keys and values in the built map. Duplicate keys are not allowed, and will cause `build()` to fail.
      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

    - #### build

          public ImmutableClassToInstanceMap<B> build()

      Returns a new immutable class-to-instance map containing the entries provided to this builder.
      Throws:
        `java.lang.IllegalArgumentException` - if duplicate keys were added