ServiceLoader.Provider (Java SE 22 & JDK 22)
Description: declaration: module: java.base, package: java.util, class: ServiceLoader, interface: Provider
Keywords: java.util.ServiceLoader.Provider interface

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.