# Class ModuleDescriptor.Provides

java.lang.Object
java.lang.module.ModuleDescriptor.Provides

All Implemented Interfaces:
  `Comparable<ModuleDescriptor.Provides>`

Enclosing class:
  `ModuleDescriptor`

public static final class ModuleDescriptor.Provides extends Object implements Comparable<ModuleDescriptor.Provides>

A service that a module provides one or more implementations of.

Since:
  9
See Also:
  - `ModuleDescriptor.provides()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `compareTo(ModuleDescriptor.Provides that)`
  Compares this `Provides` to another.
  `boolean`
  `equals(Object ob)`
  Tests this `Provides` for equality with the given object.
  `int`
  `hashCode()`
  Computes a hash code for this `Provides`.
  `List<String>`
  `providers()`
  Returns the list of the binary names of the providers or provider factories.
  `String`
  `service()`
  Returns the binary name of the service type.
  `String`
  `toString()`
  Returns a string describing this `Provides`.

  ### Methods declared in class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Method Details

  - ### service

    public String service()
    Returns the binary name of the service type.
    Returns:
      the binary name of the service type

  - ### providers

    public List<String> providers()
    Returns the list of the binary names of the providers or provider factories.
    Returns:
      A non-empty and unmodifiable list of the binary names of the providers or provider factories

  - ### compareTo

    public int compareTo(ModuleDescriptor.Provides that)
    Compares this `Provides` to another.

    Two `Provides` objects are compared by comparing the binary name of the service type lexicographically. Where the class names are equal then the list of the provider class names are compared by comparing the corresponding elements of both lists lexicographically and in sequence. Where the lists differ in size, `N` is the size of the shorter list, and the first `N` corresponding elements are equal, then the longer list is considered to succeed the shorter list.

    Specified by:
      `compareTo` in interface `Comparable<ModuleDescriptor.Provides>`
    Parameters:
      `that` - The `Provides` to compare
    Returns:
      A negative integer, zero, or a positive integer if this `Provides` is less than, equal to, or greater than the given `Provides`

  - ### hashCode

    public int hashCode()
    Computes a hash code for this `Provides`.

    The hash code is based upon the service type and the set of providers. It satisfies the general contract of the `Object.hashCode` method.

    Overrides:
      `hashCode` in class `Object`
    Returns:
      The hash-code value for this module provides
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(Object)`

  - ### equals

    public boolean equals(Object ob)
    Tests this `Provides` for equality with the given object.

    If the given object is not a `Provides` then this method returns `false`. Two `Provides` objects are equal if the service type is equal and the list of providers is equal.

    This method satisfies the general contract of the `Object.equals` method.

    Overrides:
      `equals` in class `Object`
    Parameters:
      `ob` - the object to which this object is to be compared
    Returns:
      `true` if, and only if, the given object is a `Provides` that is equal to this `Provides`
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### toString

    public String toString()
    Returns a string describing this `Provides`.
    Overrides:
      `toString` in class `Object`
    Returns:
      A string describing this `Provides`