Enum Class TypeKind

java.lang.Object
java.lang.Enum<TypeKind>
java.lang.classfile.TypeKind
All Implemented Interfaces:
Serializable, Comparable<TypeKind>, Constable

public enum TypeKind extends Enum<TypeKind>
Describes the data types Java Virtual Machine operates on. This omits returnAddress (JVMS 2.3.3) and includes void (JVMS 4.3.3), which appears as a method return type.

The returnAddress type is only used by discontinued jump subroutine and return from subroutine instructions. Jump subroutine instructions push returnAddress to the operand stack; astore instructions store returnAddress from the operand stack to local variables; return from subroutine instructions load returnAddress from local variables.

Computational Type

In the class file format, local variables (JVMS 2.6.1), and the operand stack (JVMS 2.6.2) of the Java Virtual Machine, boolean, byte, char, short types do not exist and are represented by the int computational type. int, float, reference, returnAddress, long, and doule are the computational types of the Java Virtual Machine.
See Java Virtual Machine Specification:
2.2 Data Types
2.11.1 Types and the Java Virtual Machine
Since:
24
  • Nested Class Summary

    Nested classes/interfaces declared in class Enum

    Enum.EnumDesc<E>
    Modifier and Type
    Class
    Description
    static final class 
    Enum.EnumDesc<E extends Enum<E>>
    A nominal descriptor for an enum constant.
  • Enum Constant Summary

    Enum Constants
    Enum Constant
    Description
    The primitive type boolean.
    The primitive type byte.
    The primitive type char.
    The primitive type double.
    The primitive type float.
    The primitive type int.
    The primitive type long.
    A reference type.
    The primitive type short.
    The void type, for absence of a value.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns the computational type for this type, or void for void.
    static TypeKind
    Returns the type associated with the specified field descriptor.
    static TypeKind
    Returns the type associated with the specified field descriptor.
    static TypeKind
    fromNewarrayCode(int newarrayCode)
    Returns the component type described by the array code used as an operand to newarray.
    int
    Returns the code used by the newarray instruction to create an array of this component type, or -1 if this type is not supported by newarray.
    int
    Returns the number of local variable index or operand stack depth consumed by this type.
    Returns the most specific upper bound field descriptor that can store any value of this type.
    static TypeKind
    Returns the enum constant of this class with the specified name.
    static TypeKind[]
    Returns an array containing the constants of this enum class, in the order they are declared.

    Methods declared in class Enum

    clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
    Modifier and Type
    Method
    Description
    protected final Object
    Throws CloneNotSupportedException.
    final int
    Compares this enum with the specified object for order.
    Returns an enum descriptor EnumDesc for this instance, if one can be constructed, or an empty Optional if one cannot be.
    final boolean
    equals(Object other)
    Returns true if the specified object is equal to this enum constant.
    protected final void
    Deprecated, for removal: This API element is subject to removal in a future version.
    Finalization has been deprecated for removal.
    Returns the Class object corresponding to this enum constant's enum type.
    final int
    Returns a hash code for this enum constant.
    final String
    Returns the name of this enum constant, exactly as declared in its enum declaration.
    final int
    Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero).
    Returns the name of this enum constant, as contained in the declaration.
    static <T extends Enum<T>>
    T
    valueOf(Class<T> enumClass, String name)
    Returns the enum constant of the specified enum class with the specified name.

    Methods declared in class Object

    getClass, notify, notifyAll, wait, wait, wait
    Modifier and Type
    Method
    Description
    final Class<?>
    Returns the runtime class of this Object.
    final void
    Wakes up a single thread that is waiting on this object's monitor.
    final void
    Wakes up all threads that are waiting on this object's monitor.
    final void
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
    final void
    wait(long timeoutMillis)
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
    final void
    wait(long timeoutMillis, int nanos)
    Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  • Enum Constant Details

    • BOOLEAN

      public static final TypeKind BOOLEAN
      The primitive type boolean. Its computational type is int. 0 represents false, and 1 represents true. It is zero-extended to an int when loaded onto the operand stack and narrowed by taking the bitwise AND with 1 when stored.
      See Java Virtual Machine Specification:
      2.3.4 The boolean Type
    • BYTE

      public static final TypeKind BYTE
      The primitive type byte. Its computational type is int. It is sign-extended to an int when loaded onto the operand stack and truncated when stored.
    • CHAR

      public static final TypeKind CHAR
      The primitive type char. Its computational type is int. It is zero-extended to an int when loaded onto the operand stack and truncated when stored.
    • SHORT

      public static final TypeKind SHORT
      The primitive type short. Its computational type is int. It is sign-extended to an int when loaded onto the operand stack and truncated when stored.
    • INT

      public static final TypeKind INT
      The primitive type int.
    • LONG

      public static final TypeKind LONG
      The primitive type long. It is of category 2.
    • FLOAT

      public static final TypeKind FLOAT
      The primitive type float. All NaN values of float may or may not be collapsed into a single "canonical" NaN value in loading and storing.
    • DOUBLE

      public static final TypeKind DOUBLE
      The primitive type double. It is of category 2. All NaN values of double may or may not be collapsed into a single "canonical" NaN value in loading and storing.
    • REFERENCE

      public static final TypeKind REFERENCE
      A reference type.
      See Java Virtual Machine Specification:
      2.4 Reference Types and Values
    • VOID

      public static final TypeKind VOID
      The void type, for absence of a value. While this is not a data type, this can be a method return type indicating no change in operand stack depth.
      See Java Virtual Machine Specification:
      4.3.3 Method Descriptors
  • Method Details

    • values

      public static TypeKind[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static TypeKind valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • upperBound

      public ClassDesc upperBound()
      Returns the most specific upper bound field descriptor that can store any value of this type. This is the primitive class descriptor for primitive types and void and Object descriptor for reference.
      Returns:
      the most specific upper bound field descriptor that can store any value of this type
    • newarrayCode

      public int newarrayCode()
      Returns the code used by the newarray instruction to create an array of this component type, or -1 if this type is not supported by newarray.
      Returns:
      the code used by the newarray instruction to create an array of this component type, or -1 if this type is not supported by newarray
      See Java Virtual Machine Specification:
      6.5.newarray newarray
      See Also:
    • slotSize

      public int slotSize()
      Returns the number of local variable index or operand stack depth consumed by this type. This is also the category of this type for instructions operating on the operand stack without regard to type (JVMS 2.11.1), such as pop versus pop2.
      Returns:
      the number of local variable index or operand stack depth consumed by this type
      See Java Virtual Machine Specification:
      2.6.1 Local Variables
      2.6.2 Operand Stacks
    • asLoadable

      public TypeKind asLoadable()
      Returns the computational type for this type, or void for void.
      Returns:
      the computational type for this type, or void for void
      See Also:
    • fromNewarrayCode

      public static TypeKind fromNewarrayCode(int newarrayCode)
      Returns the component type described by the array code used as an operand to newarray.
      Parameters:
      newarrayCode - the operand of the newarray instruction
      Returns:
      the component type described by the array code used as an operand to newarray
      Throws:
      IllegalArgumentException - if the code is invalid
      See Java Virtual Machine Specification:
      6.5.newarray newarray
      See Also:
    • fromDescriptor

      public static TypeKind fromDescriptor(CharSequence s)
      Returns the type associated with the specified field descriptor.
      Parameters:
      s - the field descriptor
      Returns:
      the type associated with the specified field descriptor
      Throws:
      IllegalArgumentException - only if the descriptor is not valid
    • from

      public static TypeKind from(TypeDescriptor.OfField<?> descriptor)
      Returns the type associated with the specified field descriptor.
      Parameters:
      descriptor - the field descriptor
      Returns:
      the type associated with the specified field descriptor