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

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