# Interface ModuleHashesAttribute

All Superinterfaces:
  `Attribute<ModuleHashesAttribute>, ClassElement, ClassFileElement`

public sealed interface ModuleHashesAttribute extends Attribute<ModuleHashesAttribute>, ClassElement
Models the `ModuleHashes` attribute, which appears on classes that represent module descriptors to capture the hashes of a set of co-delivered modules.

The specification of the `ModuleHashes` attribute is:

    ModuleHashes_attribute {
      // index to CONSTANT_utf8_info structure in constant pool representing
      // the string "ModuleHashes"
      u2 attribute_name_index;
      u4 attribute_length;

      // index to CONSTANT_utf8_info structure with algorithm name
      u2 algorithm_index;

      // the number of entries in the hashes table
      u2 hashes_count;
      {   u2 module_name_index (index to CONSTANT_Module_info structure)
          u2 hash_length;
          u1 hash[hash_length];
      } hashes[hashes_count];

    }

This attribute only appears on classes, and does not permit multiple instances in a class. It has a data dependency on the constant pool.

This attribute is not predefined in the Java SE Platform. This is a JDK-specific nonstandard attribute produced by the `jdk.jlink` module, which defines the `jlink` and `jmod` tools.

Since:
  24
See Also:
  - `Attributes.moduleHashes()`
  - `ModuleResolutionAttribute`
  - `ModuleTargetAttribute`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Utf8Entry`
  `algorithm()`
  Returns the algorithm name used to compute the hash.
  `List<ModuleHashInfo>`
  `hashes()`
  Returns the hash information about related modules.
  `static ModuleHashesAttribute`
  `of(Utf8Entry algorithm, ModuleHashInfo... hashes)`
  Returns a `ModuleHashes` attribute.
  `static ModuleHashesAttribute`
  `of(Utf8Entry algorithm, List<ModuleHashInfo> hashes)`
  Returns a `ModuleHashes` attribute.
  `static ModuleHashesAttribute`
  `of(String algorithm, ModuleHashInfo... hashes)`
  Returns a `ModuleHashes` attribute.
  `static ModuleHashesAttribute`
  `of(String algorithm, List<ModuleHashInfo> hashes)`
  Returns a `ModuleHashes` attribute.

  ### Methods declared in interface Attribute

  `attributeMapper, attributeName`
  Modifier and Type
  Method
  Description
  `AttributeMapper<ModuleHashesAttribute>`
  `attributeMapper()`
  Returns the `AttributeMapper` associated with this attribute.
  `Utf8Entry`
  `attributeName()`
  Returns the name of the attribute.

- ## Method Details

  - ### algorithm

    Utf8Entry algorithm()
    Returns the algorithm name used to compute the hash.
    Returns:
      the algorithm name used to compute the hash

  - ### hashes

    List<ModuleHashInfo> hashes()
    Returns the hash information about related modules.
    Returns:
      the hash information about related modules

  - ### of

    static ModuleHashesAttribute of(String algorithm, List<ModuleHashInfo> hashes)
    Returns a `ModuleHashes` attribute.
    Parameters:
      `algorithm` - the hashing algorithm
      `hashes` - the hash descriptions
    Returns:
      a `ModuleHashes` attribute
    Throws:
      `IllegalArgumentException` - if the number of descriptions exceeds the limit of `u2`

  - ### of

    static ModuleHashesAttribute of(String algorithm, ModuleHashInfo... hashes)
    Returns a `ModuleHashes` attribute.
    Parameters:
      `algorithm` - the hashing algorithm
      `hashes` - the hash descriptions
    Returns:
      a `ModuleHashes` attribute
    Throws:
      `IllegalArgumentException` - if the number of descriptions exceeds the limit of `u2`

  - ### of

    static ModuleHashesAttribute of(Utf8Entry algorithm, List<ModuleHashInfo> hashes)
    Returns a `ModuleHashes` attribute.
    Parameters:
      `algorithm` - the hashing algorithm
      `hashes` - the hash descriptions
    Returns:
      a `ModuleHashes` attribute
    Throws:
      `IllegalArgumentException` - if the number of descriptions exceeds the limit of `u2`

  - ### of

    static ModuleHashesAttribute of(Utf8Entry algorithm, ModuleHashInfo... hashes)
    Returns a `ModuleHashes` attribute.
    Parameters:
      `algorithm` - the hashing algorithm
      `hashes` - the hash descriptions
    Returns:
      a `ModuleHashes` attribute
    Throws:
      `IllegalArgumentException` - if the number of descriptions exceeds the limit of `u2`