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