Module java.base
Package java.util

# Interface ServiceLoader.Provider<S>

Type Parameters:
  `S` - The service type

All Superinterfaces:
  `Supplier<S>`

Enclosing class:
  `ServiceLoader<S>`

public static interface ServiceLoader.Provider<S> extends Supplier<S>
Represents a service provider located by `ServiceLoader`.

When using a loader's `stream()` method then the elements are of type `Provider`. This allows processing to select or filter on the provider class without instantiating the provider.

Since:
  9

## Method Summary

Modifier and Type
Method
Description
`S`
`get()`
Returns an instance of the provider.
`Class<? extends S>`
`type()`
Returns the provider type.

## Method Details

### type

Class<? extends S> type()
Returns the provider type. There is no guarantee that this type is accessible or that it has a public no-args constructor. The `get()` method should be used to obtain the provider instance.

When a module declares that the provider class is created by a provider factory then this method returns the return type of its public static "`provider()`" method.

Returns:
  The provider type

### get

S get()
Returns an instance of the provider.

Specified by:
  `get` in interface `Supplier<S>`
Returns:
  An instance of the provider.
Throws:
  `ServiceConfigurationError` - If the service provider cannot be instantiated, or in the case of a provider factory, the public static "`provider()`" method returns `null` or throws an error or exception. The `ServiceConfigurationError` will carry an appropriate cause where possible.