ModuleProvideInfo (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.lang.classfile.attribute, interface: ModuleProvideInfo
Keywords: java.lang.classfile.attribute.ModuleProvideInfo interface

# Interface ModuleProvideInfo

public sealed interface ModuleProvideInfo
Models a single "provides" declaration in the `ModuleAttribute`.

See Java Virtual Machine Specification:
  4.7.25 The `Module` Attribute
Since:
  24
See Also:
  - `ModuleAttribute.provides()`
  - `ModuleDescriptor.Provides`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ModuleProvideInfo`
  `of(ClassEntry provides, ClassEntry... providesWith)`
  Returns a service provision description.
  `static ModuleProvideInfo`
  `of(ClassEntry provides, List<ClassEntry> providesWith)`
  Returns a service provision description.
  `static ModuleProvideInfo`
  `of(ClassDesc provides, ClassDesc... providesWith)`
  Returns a service provision description.
  `static ModuleProvideInfo`
  `of(ClassDesc provides, List<ClassDesc> providesWith)`
  Returns a service provision description.
  `ClassEntry`
  `provides()`
  Returns the service interface representing the provided service.
  `List<ClassEntry>`
  `providesWith()`
  Returns the classes providing the service implementation.

- ## Method Details

  - ### provides

    ClassEntry provides()
    Returns the service interface representing the provided service.
    Returns:
      the service interface representing the provided service
    See Also:
      - `ModuleDescriptor.Provides.service()`

  - ### providesWith

    List<ClassEntry> providesWith()
    Returns the classes providing the service implementation. The list should not be empty.
    Returns:
      the classes providing the service implementation
    See Also:
      - `ModuleDescriptor.Provides.providers()`

  - ### of

    static ModuleProvideInfo of(ClassEntry provides, List<ClassEntry> providesWith)
    Returns a service provision description.
    Parameters:
      `provides` - the service class interface
      `providesWith` - the service class implementations, must not be empty
    Returns:
      a service provision description
    Throws:
      `IllegalArgumentException` - if the number of implementations exceeds the limit of `u2`

  - ### of

    static ModuleProvideInfo of(ClassEntry provides, ClassEntry... providesWith)
    Returns a service provision description.
    Parameters:
      `provides` - the service class interface
      `providesWith` - the service class implementations, must not be empty
    Returns:
      a service provision description
    Throws:
      `IllegalArgumentException` - if the number of implementations exceeds the limit of `u2`

  - ### of

    static ModuleProvideInfo of(ClassDesc provides, List<ClassDesc> providesWith)
    Returns a service provision description.
    Parameters:
      `provides` - the service class interface
      `providesWith` - the service class implementations, must not be empty
    Returns:
      a service provision description
    Throws:
      `IllegalArgumentException` - if `provides` or any of `providesWith` represents a primitive type, or the number of implementations exceeds the limit of `u2`

  - ### of

    static ModuleProvideInfo of(ClassDesc provides, ClassDesc... providesWith)
    Returns a service provision description.
    Parameters:
      `provides` - the service class interface
      `providesWith` - the service class implementations, must not be empty
    Returns:
      a service provision description
    Throws:
      `IllegalArgumentException` - if `provides` or any of `providesWith` represents a primitive type, or the number of implementations exceeds the limit of `u2`