# Interface Signature

All Known Subinterfaces:
  `Signature.ArrayTypeSig, Signature.BaseTypeSig, Signature.ClassTypeSig, Signature.RefTypeSig, Signature.ThrowableSig, Signature.TypeVarSig`

public sealed interface Signature permits Signature.BaseTypeSig, Signature.RefTypeSig, Signature.ThrowableSig
Models generic Java type signatures, as defined in JVMS 4.7.9.1.

Names in signatures are identifiers, which must not be empty and must not contain any of the ASCII characters `. ; [ / < > :`. Top-level class and interface names are denoted by slash-separated identifiers.

See Java Language Specification:
  4.1 The Kinds of Types and Values
See Java Virtual Machine Specification:
  4.7.9.1 Signatures
Sealed Class Hierarchy Graph:
Since:
  24
See Also:
  - `Type`
  - `SignatureAttribute`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `Signature.ArrayTypeSig`
  Models the signature of an array type.
  `static interface`
  `Signature.BaseTypeSig`
  Models the signature of a primitive type (JLS 4.2) or void.
  `static interface`
  `Signature.ClassTypeSig`
  Models the signature of a possibly-parameterized class or interface type.
  `static interface`
  `Signature.RefTypeSig`
  Models the signature of a reference type, which may be a class, interface, type variable, or array type.
  `static interface`
  `Signature.ThrowableSig`
  Marker interface for a signature for a throwable type.
  `static interface`
  `Signature.TypeArg`
  Models a type argument, an argument to a type parameter.
  `static interface`
  `Signature.TypeParam`
  Models a signature for a type parameter of a generic class, interface, method, or constructor, which introduces a type variable.
  `static interface`
  `Signature.TypeVarSig`
  Models the signature of a type variable.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static Signature`
  `of(ClassDesc classDesc)`
  Returns a Java type signature from a field descriptor.
  `static Signature`
  `parseFrom(String javaTypeSignature)`
  Parses a Java type signature from a raw string.
  `String`
  `signatureString()`
  Returns the raw signature string.

- ## Method Details

  - ### signatureString

    String signatureString()
    Returns the raw signature string.
    Returns:
      the raw signature string

  - ### parseFrom

    static Signature parseFrom(String javaTypeSignature)
    Parses a Java type signature from a raw string.
    Parameters:
      `javaTypeSignature` - raw Java type signature string
    Returns:
      a Java type signature
    Throws:
      `IllegalArgumentException` - if the string is not a valid Java type signature string

  - ### of

    static Signature of(ClassDesc classDesc)
    Returns a Java type signature from a field descriptor. The returned signature represents a reifiable type (JLS 4.7).
    Parameters:
      `classDesc` - the symbolic description of the Java type
    Returns:
      a Java type signature from a field descriptor
    Throws:
      `IllegalArgumentException` - if the field descriptor cannot be denoted