Field (Java SE 17 & JDK 17)
Description: declaration: module: jdk.jdi, package: com.sun.jdi, interface: Field
Keywords: com.sun.jdi.Field interface

Module jdk.jdi
Package com.sun.jdi

# Interface Field

All Superinterfaces:
  `Accessible`, `Comparable<Field>`, `Mirror`, `TypeComponent`

public interface Field extends TypeComponent, Comparable<Field>
A class or instance variable in the target VM. See `TypeComponent` for general information about Field and Method mirrors.

Since:
  1.3
See Also:
  - `ObjectReference`
  - `ReferenceType`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object obj)`
  Compares the specified Object with this field for equality.
  `int`
  `hashCode()`
  Returns the hash code value for this Field.
  `boolean`
  `isEnumConstant()`
  Determine if this is a field that represents an enum constant.
  `boolean`
  `isTransient()`
  Determine if this is a transient field.
  `boolean`
  `isVolatile()`
  Determine if this is a volatile field.
  `Type`
  `type()`
  Returns the type of this field.
  `String`
  `typeName()`
  Returns a text representation of the type of this field.

  ### Methods declared in interface com.sun.jdi.Accessible

  `isPackagePrivate, isPrivate, isProtected, isPublic, modifiers`

  ### Methods declared in interface java.lang.Comparable

  `compareTo`

  ### Methods declared in interface com.sun.jdi.Mirror

  `toString, virtualMachine`

  ### Methods declared in interface com.sun.jdi.TypeComponent

  `declaringType, genericSignature, isFinal, isStatic, isSynthetic, name, signature`

- ## Method Details

  - ### typeName

    String typeName()
    Returns a text representation of the type of this field. Where the type is the type specified in the declaration of this field.

    This type name is always available even if the type has not yet been created or loaded.

    Returns:
      a String representing the type of this field.

  - ### type

    Type type() throws ClassNotLoadedException
    Returns the type of this field. Where the type is the type specified in the declaration of this field.

    For example, if a target class defines:

            short s;
            Date d;
            byte[] ba;

    And the JDI client defines these `Field` objects:

            Field sField = targetClass.fieldByName("s");
            Field dField = targetClass.fieldByName("d");
            Field baField = targetClass.fieldByName("ba");

    to mirror the corresponding fields, then `sField.type()` is a `ShortType`, `dField.type()` is the `ReferenceType` for `java.util.Date` and `((ArrayType)(baField.type())).componentType()` is a `ByteType`.

    Note: if the type of this field is a reference type (class, interface, or array) and it has not been created or loaded by the declaring type's class loader - that is, `declaringType()` `.classLoader()`, then ClassNotLoadedException will be thrown. Also, a reference type may have been loaded but not yet prepared, in which case the type will be returned but attempts to perform some operations on the returned type (e.g. `fields()`) will throw a `ClassNotPreparedException`. Use `ReferenceType.isPrepared()` to determine if a reference type is prepared.

    Returns:
      the `Type` of this field.
    Throws:
      `ClassNotLoadedException` - if the type has not yet been loaded or created through the appropriate class loader.
    See Also:
      - `Type`

  - ### isTransient

    boolean isTransient()
    Determine if this is a transient field.
    Returns:
      `true` if this field is transient; `false` otherwise.

  - ### isVolatile

    boolean isVolatile()
    Determine if this is a volatile field.
    Returns:
      `true` if this field is volatile; `false` otherwise.

  - ### isEnumConstant

    boolean isEnumConstant()
    Determine if this is a field that represents an enum constant.
    Returns:
      `true` if this field represents an enum constant; `false` otherwise.

  - ### equals

    boolean equals(Object obj)
    Compares the specified Object with this field for equality.
    Overrides:
      `equals` in class `Object`
    Parameters:
      `obj` - the reference object with which to compare.
    Returns:
      `true` if the Object is a Field and if both mirror the same field (declared in the same class or interface, in the same VM).
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### hashCode

    int hashCode()
    Returns the hash code value for this Field.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      the integer hash code.
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(java.lang.Object)`