# Interface ModuleRequireInfo

public sealed interface ModuleRequireInfo
Models a single "requires" declaration in the `ModuleAttribute`.

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

## Method Summary

Modifier and Type
Method
Description
`default boolean`
`has(AccessFlag flag)`
Returns whether the specific access flag is set.
`static ModuleRequireInfo`
`of(ModuleEntry requires, int requiresFlags, Utf8Entry requiresVersion)`
Returns a module requirement description.
`static ModuleRequireInfo`
`of(ModuleEntry requires, Collection<AccessFlag> requiresFlags, Utf8Entry requiresVersion)`
Returns a module requirement description.
`static ModuleRequireInfo`
`of(ModuleDesc requires, int requiresFlags, String requiresVersion)`
Returns a module requirement description.
`static ModuleRequireInfo`
`of(ModuleDesc requires, Collection<AccessFlag> requiresFlags, String requiresVersion)`
Returns a module requirement description.
`ModuleEntry`
`requires()`
Returns The module on which the current module depends.
`default Set<AccessFlag>`
`requiresFlags()`
Returns the flags associated with this require declaration, as a set of flag enums.
`int`
`requiresFlagsMask()`
Returns the flags associated with this require declaration, as a bit mask.
`Optional<Utf8Entry>`
`requiresVersion()`
Returns the required version of the required module, if present.

## Method Details

### requires

ModuleEntry requires()
Returns The module on which the current module depends.

Returns:
  The module on which the current module depends

### requiresFlagsMask

int requiresFlagsMask()
Returns the flags associated with this require declaration, as a bit mask. It is a `u2` value.

Returns:
  the flags associated with this require declaration, as a bit mask
See Also:
  - `ModuleDescriptor.Requires.modifiers()`
  - `AccessFlag.Location.MODULE_REQUIRES`

### requiresFlags

default Set<AccessFlag> requiresFlags()
Returns the flags associated with this require declaration, as a set of flag enums.

Returns:
  the flags associated with this require declaration, as a set of flag enums
Throws:
  `IllegalArgumentException` - if the flags mask has any undefined bit set
See Also:
  - `ModuleDescriptor.Requires.accessFlags()`
  - `AccessFlag.Location.MODULE_REQUIRES`

### requiresVersion

Optional<Utf8Entry> requiresVersion()
Returns the required version of the required module, if present.

Returns:
  the required version of the required module, if present
See Also:
  - `ModuleDescriptor.Requires.rawCompiledVersion()`

### has

default boolean has(AccessFlag flag)
Returns whether the specific access flag is set.

Parameters:
  `flag` - the access flag
Returns:
  whether the specific access flag is set
See Also:
  - `AccessFlag.Location.MODULE_REQUIRES`

### of

static ModuleRequireInfo of(ModuleEntry requires, int requiresFlags, Utf8Entry requiresVersion)
Returns a module requirement description.

Parameters:
  `requires` - the required module
  `requiresFlags` - the require-specific flags
  `requiresVersion` - the required version, may be `null`
Returns:
  a module requirement description
Throws:
  `IllegalArgumentException` - if `requiresFlags` is not `u2`

### of

static ModuleRequireInfo of(ModuleEntry requires, Collection<AccessFlag> requiresFlags, Utf8Entry requiresVersion)
Returns a module requirement description.

Parameters:
  `requires` - the required module
  `requiresFlags` - the require-specific flags
  `requiresVersion` - the required version, may be `null`
Returns:
  a module requirement description
Throws:
  `IllegalArgumentException` - if any flag cannot be applied to the `AccessFlag.Location.MODULE_REQUIRES` location

### of

static ModuleRequireInfo of(ModuleDesc requires, int requiresFlags, String requiresVersion)
Returns a module requirement description.

Parameters:
  `requires` - the required module
  `requiresFlags` - the require-specific flags
  `requiresVersion` - the required version, may be `null`
Returns:
  a module requirement description
Throws:
  `IllegalArgumentException` - if `requires` represents an unnamed module, or `requiresFlags` is not `u2`

### of

static ModuleRequireInfo of(ModuleDesc requires, Collection<AccessFlag> requiresFlags, String requiresVersion)
Returns a module requirement description.

Parameters:
  `requires` - the required module
  `requiresFlags` - the require-specific flags
  `requiresVersion` - the required version, may be `null`
Returns:
  a module requirement description
Throws:
  `IllegalArgumentException` - if `requires` represents an unnamed module; or if any flag cannot be applied to the `AccessFlag.Location.MODULE_REQUIRES` location