# Class ModuleDescriptor.Opens

java.lang.Object
java.lang.module.ModuleDescriptor.Opens

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

Enclosing class:
  `ModuleDescriptor`

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

A package opened by a module, may be qualified or unqualified.

The opens directive in a module declaration declares a package to be open to allow all types in the package, and all their members, not just public types and their public members to be reflected on by APIs that support private access or a way to bypass or suppress default Java language access control checks.

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

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `ModuleDescriptor.Opens.Modifier`
  A modifier on an open package.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Set<AccessFlag>`
  `accessFlags()`
  Returns the set of the module opens flags.
  `int`
  `compareTo(ModuleDescriptor.Opens that)`
  Compares this module `Opens` to another.
  `boolean`
  `equals(Object ob)`
  Tests this module `Opens` for equality with the given object.
  `int`
  `hashCode()`
  Computes a hash code for this module `Opens`.
  `boolean`
  `isQualified()`
  Returns `true` if this is a qualified `Opens`.
  `Set<ModuleDescriptor.Opens.Modifier>`
  `modifiers()`
  Returns the set of modifiers.
  `String`
  `source()`
  Returns the package name.
  `Set<String>`
  `targets()`
  For a qualified `Opens`, returns the non-empty and immutable set of the module names to which the package is open.
  `String`
  `toString()`
  Returns a string describing the open package.

  ### Methods declared in class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Method Details

  - ### modifiers

    public Set<ModuleDescriptor.Opens.Modifier> modifiers()
    Returns the set of modifiers.
    Returns:
      A possibly-empty unmodifiable set of modifiers

  - ### accessFlags

    public Set<AccessFlag> accessFlags()
    Returns the set of the module opens flags.
    Returns:
      A possibly-empty unmodifiable set of opens flags
    See Java Virtual Machine Specification:
      4.7.25 The Module Attribute
    Since:
      20
    See Also:
      - `modifiers()`

  - ### isQualified

    public boolean isQualified()
    Returns `true` if this is a qualified `Opens`.
    Returns:
      `true` if this is a qualified `Opens`

  - ### source

    public String source()
    Returns the package name.
    Returns:
      The package name

  - ### targets

    public Set<String> targets()
    For a qualified `Opens`, returns the non-empty and immutable set of the module names to which the package is open. For an unqualified `Opens`, returns an empty set.
    Returns:
      The set of target module names or for an unqualified `Opens`, an empty set

  - ### compareTo

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

    Two `Opens` objects are compared by comparing the package names lexicographically. Where the packages names are equal then the sets of modifiers are compared in the same way that module modifiers are compared (see `ModuleDescriptor.compareTo`). Where the package names are equal and the set of modifiers are equal then the set of target modules are compared. This is done by sorting the names of the target modules in ascending order, and according to their natural ordering, and then comparing the corresponding elements lexicographically. Where the sets differ in size, and the larger set contains all elements of the smaller set, then the larger set is considered to succeed the smaller set.

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

  - ### hashCode

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

    The hash code is based upon the modifiers, the package name, and for a qualified `Opens`, the set of modules names to which the package is opened. It satisfies the general contract of the `Object.hashCode` method.

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

  - ### equals

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

    If the given object is not an `Opens` then this method returns `false`. Two `Opens` objects are equal if their set of modifiers is equal, the package names are equal and the set of target module names 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 module dependence that is equal to this module dependence
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### toString

    public String toString()
    Returns a string describing the open package.
    Overrides:
      `toString` in class `Object`
    Returns:
      A string describing the open package