# 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 java.lang.classfile.Attribute

  `attributeMapper, attributeName`

- ## 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

  - ### 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

  - ### 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

  - ### 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