# Interface PackageDesc

public sealed interface PackageDesc
A nominal descriptor for a `Package` constant.

To create a `PackageDesc` for a package, use the `of(String)` or `ofInternalName(String)` method.

See Java Virtual Machine Specification:
  4.4.12 The CONSTANT_Package_info Structure
Since:
  21

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object o)`
  Compare the specified object with this descriptor for equality.
  `String`
  `internalName()`
  Returns the fully qualified (slash-separated) package name in internal form of this `PackageDesc`.
  `default String`
  `name()`
  Returns the fully qualified (dot-separated) package name of this `PackageDesc`.
  `static PackageDesc`
  `of(String name)`
  Returns a `PackageDesc` for a package, given the name of the package, such as `"java.lang"`.
  `static PackageDesc`
  `ofInternalName(String name)`
  Returns a `PackageDesc` for a package, given the name of the package in internal form, such as `"java/lang"`.

- ## Method Details

  - ### of

    static PackageDesc of(String name)
    Returns a `PackageDesc` for a package, given the name of the package, such as `"java.lang"`.
    Parameters:
      `name` - the fully qualified (dot-separated) package name
    Returns:
      a `PackageDesc` describing the desired package
    Throws:
      `NullPointerException` - if the argument is `null`
      `IllegalArgumentException` - if the name string is not in the correct format
    See Java Language Specification:
      6.5.3 Meaning of Module Names and Package Names
    See Also:
      - `ofInternalName(String)`

  - ### ofInternalName

    static PackageDesc ofInternalName(String name)
    Returns a `PackageDesc` for a package, given the name of the package in internal form, such as `"java/lang"`.
    Parameters:
      `name` - the fully qualified package name, in internal (slash-separated) form
    Returns:
      a `PackageDesc` describing the desired package
    Throws:
      `NullPointerException` - if the argument is `null`
      `IllegalArgumentException` - if the name string is not in the correct format
    See Java Virtual Machine Specification:
      4.2.1 Binary Class and Interface Names
      4.2.3 Module and Package Names
    See Also:
      - `of(String)`

  - ### internalName

    String internalName()
    Returns the fully qualified (slash-separated) package name in internal form of this `PackageDesc`.
    Returns:
      the package name in internal form, or the empty string for the unnamed package
    See Also:
      - `name()`

  - ### name

    default String name()
    Returns the fully qualified (dot-separated) package name of this `PackageDesc`.
    Returns:
      the package name, or the empty string for the unnamed package
    See Also:
      - `internalName()`

  - ### equals

    boolean equals(Object o)
    Compare the specified object with this descriptor for equality. Returns `true` if and only if the specified object is also a `PackageDesc` and both describe the same package.
    Overrides:
      `equals` in class `Object`
    Parameters:
      `o` - the other object
    Returns:
      whether this descriptor is equal to the other object
    See Also:
      - `Object.hashCode()`
      - `HashMap`