javax.inject

## Interface Provider<T>

-     public interface Provider<T>

  Provides instances of `T`. Typically implemented by an injector. For any type `T` that can be injected, you can also inject `Provider<T>`. Compared to injecting `T` directly, injecting `Provider<T>` enables:
  - retrieving multiple instances.
  - lazy or optional retrieval of an instance.
  - breaking circular dependencies.
  - abstracting scope so you can look up an instance in a smaller scope from an instance in a containing scope.

  For example:

         class Car {
           @Inject Car(Provider<Seat> seatProvider) {
             Seat driver = seatProvider.get();
             Seat passenger = seatProvider.get();
             ...
           }
         }

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `T` | `get()` Provides a fully-constructed and injected instance of `T`.

- - ### Method Detail

    - #### get

          T get()

      Provides a fully-constructed and injected instance of `T`.
      Throws:
        `java.lang.RuntimeException` - if the injector encounters an error while providing an instance. For example, if an injectable member on `T` throws an exception, the injector may wrap the exception and throw it to the caller of `get()`. Callers should not try to handle such exceptions as the behavior may vary across injector implementations and even different configurations of the same injector.