Class RecordedObject

java.lang.Object
jdk.jfr.consumer.RecordedObject
Direct Known Subclasses:
RecordedClass, RecordedClassLoader, RecordedEvent, RecordedFrame, RecordedMethod, RecordedStackTrace, RecordedThread, RecordedThreadGroup

A complex data type that consists of one or more fields.

This class provides methods to select and query nested objects by passing a dot "." delimited String object (for instance, "aaa.bbb"). A method evaluates a nested object from left to right, and if a part is null, it throws NullPointerException.

Since:
9
  • Method Summary

    Modifier and Type
    Method
    Description
    final boolean
    Returns the value of a field of type boolean.
    final byte
    Returns the value of a field of type byte.
    final char
    Returns the value of a field of type char.
    Returns the value of a field of type Class.
    final double
    Returns the value of a field of type double or of another primitive type that is convertible to type double by a widening conversion.
    final Duration
    Returns the value of a timespan field.
    Returns an immutable list of the fields for this object.
    final float
    Returns the value of a field of type float or of another primitive type convertible to type float by a widening conversion.
    final Instant
    Returns the value of a timestamp field.
    final int
    getInt(String name)
    Returns the value of a field of type int or of another primitive type that is convertible to type int by a widening conversion.
    final long
    Returns the value of a field of type long or of another primitive type that is convertible to type long by a widening conversion.
    final short
    Returns the value of a field of type short or of another primitive type convertible to type short by a widening conversion.
    final String
    Returns the value of a field of type String.
    Returns the value of a field of type Thread.
    final <T> T
    Returns the value of the field with the given name.
    boolean
    Returns true if a field with the given name exists, false otherwise.
    final String
    Returns a textual representation of this object.

    Methods declared in class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    Modifier and Type
    Method
    Description
    protected Object
    Creates and returns a copy of this object.
    boolean
    Indicates whether some other object is "equal to" this one.
    protected void
    Deprecated, for removal: This API element is subject to removal in a future version.
    Finalization is deprecated and subject to removal in a future release.
    final Class<?>
    Returns the runtime class of this Object.
    int
    Returns a hash code value for 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.
  • Method Details

    • hasField

      public boolean hasField(String name)
      Returns true if a field with the given name exists, false otherwise.

      It's possible to index into a nested field by using "." (for instance "thread.group.parent.name").

      Parameters:
      name - name of the field to get, not null
      Returns:
      true if the field exists, false otherwise
      See Also:
    • getValue

      public final <T> T getValue(String name)
      Returns the value of the field with the given name.

      The return type may be a primitive type or a subclass of RecordedObject.

      It's possible to index into a nested object by using "." (for instance "thread.group.parent.name").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Example

      if (event.hasField("intValue")) {
          int intValue = event.getValue("intValue");
          System.out.println("Int value: " + intValue);
      }
      
      if (event.hasField("objectClass")) {
          RecordedClass clazz = event.getValue("objectClass");
          System.out.println("Class name: " + clazz.getName());
      }
      
      if (event.hasField("sampledThread")) {
          RecordedThread sampledThread = event.getValue("sampledThread");
          System.out.println("Sampled thread: " + sampledThread.getJavaName());
      }
      
      Type Parameters:
      T - the return type
      Parameters:
      name - of the field to get, not null
      Returns:
      the value, can be null
      Throws:
      IllegalArgumentException - if no field called name exists
      See Also:
    • getFields

      public List<ValueDescriptor> getFields()
      Returns an immutable list of the fields for this object.
      Returns:
      the fields, not null
    • getBoolean

      public final boolean getBoolean(String name)
      Returns the value of a field of type boolean.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - name of the field to get, not null
      Returns:
      the value of the field, true or false
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field is not of type boolean
      See Also:
    • getByte

      public final byte getByte(String name)
      Returns the value of a field of type byte.

      It's possible to index into a nested object using "." (for example, "foo.bar").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field is not of type byte
      See Also:
    • getChar

      public final char getChar(String name)
      Returns the value of a field of type char.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field as a char
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field is not of type char
      See Also:
    • getShort

      public final short getShort(String name)
      Returns the value of a field of type short or of another primitive type convertible to type short by a widening conversion.

      This method can be used on the following types: short and byte.

      If the field has the @Unsigned annotation and is of a narrower type than short, then the value is returned as an unsigned.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field converted to type short
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field value can't be converted to the type short by a widening conversion
      See Also:
    • getInt

      public final int getInt(String name)
      Returns the value of a field of type int or of another primitive type that is convertible to type int by a widening conversion.

      This method can be used on fields of the following types: int, short, char, and byte.

      If the field has the @Unsigned annotation and is of a narrower type than int, then the value will be returned as an unsigned.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field converted to type int
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field value can't be converted to the type int by a widening conversion
      See Also:
    • getFloat

      public final float getFloat(String name)
      Returns the value of a field of type float or of another primitive type convertible to type float by a widening conversion.

      This method can be used on fields of the following types: float, long, int, short, char, and byte.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field converted to type float
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field value can't be converted to the type float by a widening conversion
      See Also:
    • getLong

      public final long getLong(String name)
      Returns the value of a field of type long or of another primitive type that is convertible to type long by a widening conversion.

      This method can be used on fields of the following types: long, int, short, char, and byte.

      If the field has the @Unsigned annotation and is of a narrower type than long, then the value will be returned as an unsigned.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field converted to type long
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field value can't be converted to the type long via a widening conversion
      See Also:
    • getDouble

      public final double getDouble(String name)
      Returns the value of a field of type double or of another primitive type that is convertible to type double by a widening conversion.

      This method can be used on fields of the following types: double, float, long, int, short, char, and byte.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field converted to type double
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field value can't be converted to the type double by a widening conversion
      See Also:
    • getString

      public final String getString(String name)
      Returns the value of a field of type String.

      It's possible to index into a nested object using "." (for example, "foo.bar").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field as a String, can be null
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field isn't of type String
      See Also:
    • getDuration

      public final Duration getDuration(String name)
      Returns the value of a timespan field.

      This method can be used on fields annotated with @Timespan, and of the following types: long, int, short, char, and byte.

      If the committed event value was Long.MAX_VALUE, regardless of the unit set by @Timespan, this method returns ChronoUnit.FOREVER.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      a time span represented as a Duration, not null
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field value can't be converted to a Duration object
      See Also:
    • getInstant

      public final Instant getInstant(String name)
      Returns the value of a timestamp field.

      This method can be used on fields annotated with @Timestamp, and of the following types: long, int, short, char and byte.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      a timstamp represented as an Instant, not null
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field value can't be converted to an Instant object
      See Also:
    • getClass

      public final RecordedClass getClass(String name)
      Returns the value of a field of type Class.

      It's possible to index into a nested object using "." (for example, "aaa.bbb").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field as a RecordedClass, can be null
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field isn't of type Class
      See Also:
    • getThread

      public final RecordedThread getThread(String name)
      Returns the value of a field of type Thread.

      It's possible to index into a nested object using "." (for example, "foo.bar").

      A field might change or be removed in a future JDK release. A best practice for callers of this method is to validate the field before attempting access.

      Parameters:
      name - of the field to get, not null
      Returns:
      the value of the field as a RecordedThread object, can be null
      Throws:
      IllegalArgumentException - if the field doesn't exist, or the field isn't of type Thread
      See Also:
    • toString

      public final String toString()
      Returns a textual representation of this object.
      Overrides:
      toString in class Object
      Returns:
      textual description of this object