Spec-Zone.ru › OpenJDK 27

Класс ValueDescriptor

java.lang.Object
jdk.jfr.ValueDescriptor
public final class ValueDescriptor extends Object
Описывает поля события и элементы аннотаций.

В следующем примере показано, как класс ValueDescriptor можно использовать для получения сведений о полях всех типов.

void printTypes() {
    Map<String, List<ValueDescriptor>> typeMap = new LinkedHashMap<>();
    for (EventType eventType : FlightRecorder.getFlightRecorder().getEventTypes()) {
        findTypes(typeMap, eventType.getName(), eventType.getFields());
    }
    for (String type : typeMap.keySet()) {
        System.out.println("Type: " + type);
        for (ValueDescriptor field : typeMap.get(type)) {
            System.out.println(" Field: " + field.getName());
            String arrayBrackets = field.isArray() ? "[]" : "";
            System.out.println("  Type: " + field.getTypeName() + arrayBrackets);
            if (field.getLabel() != null) {
                System.out.println("  Label: " + field.getLabel());
            }
            if (field.getDescription() != null) {
                System.out.println("  Description: " + field.getDescription());
            }
            if (field.getContentType() != null) {
                System.out.println("  Content Types: " + field.getContentType());
            }
        }
        System.out.println();
    }
}

void findTypes(Map<String, List<ValueDescriptor>> typeMap, String typeName, List<ValueDescriptor> fields) {
    if (!typeMap.containsKey(typeName)) {
        typeMap.put(typeName, fields);
        for (ValueDescriptor subField : fields) {
            findTypes(typeMap, subField.getTypeName(), subField.getFields());
        }
    }
}
Since:
9

Краткое описание конструкторов

Конструктор Описание
ValueDescriptor(Class<?> type, String name)
Создает дескриптор значения, полезный для динамического создания типов событий и аннотаций.
ValueDescriptor(Class<?> type, String name, List<AnnotationElement> annotations)
Создает дескриптор значения, полезный для динамического создания типов событий и аннотаций.

Краткое описание методов

Модификатор и тип Метод Описание
<A extends Annotation>
A
getAnnotation(Class<A> annotationType)
Возвращает первую аннотацию указанного типа, если для этого дескриптора значения непосредственно присутствует элемент аннотации с таким же именем; в противном случае null.
List<AnnotationElement> getAnnotationElements()
Возвращает неизменяемый список элементов аннотаций для этого дескриптора значения.
String getContentType()
Возвращает текстовый идентификатор, указывающий, как интерпретируется или форматируется значение, представленное этим ValueDescriptor.
String getDescription()
Возвращает предложение с описанием значения (например, "Maximum throughput in the transaction system. Value is reset after each new batch.").
List<ValueDescriptor> getFields()
Возвращает неизменяемый список дескрипторов значений, если тип является составным; в противном случае возвращает пустой список.
String getLabel()
Возвращает удобочитаемое имя, описывающее значение (например, "Maximum Throughput").
String getName()
Возвращает имя значения (например, "maxThroughput").
long getTypeId()
Возвращает уникальный идентификатор типа в виртуальной машине Java (JVM).
String getTypeName()
Возвращает полное имя класса типа, связанного с этим дескриптором значения.
boolean isArray()
Возвращает, является ли этот дескриптор значения типом массива.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени.

Подробное описание конструкторов

ValueDescriptor

public ValueDescriptor(Class<?> type, String name)

Создает дескриптор значения, полезный для динамического создания типов событий и аннотаций.

Поддерживаются следующие типы:

  • byte.class
  • short.class
  • int.class
  • long.class
  • char.class
  • float.class
  • double.class
  • boolean.class
  • String.class
  • Class.class
  • Thread.class

Имя должно быть допустимым идентификатором Java (например, "maxThroughput"). Дополнительные сведения см. в разделах 3.8 и 3.9 спецификации языка Java.

Параметры:
type — тип, не null
name — имя, не null
Исключения:
IllegalArgumentException — если имя не является допустимым идентификатором Java

ValueDescriptor

public ValueDescriptor(Class<?> type, String name, List<AnnotationElement> annotations)

Создает дескриптор значения, полезный для динамического создания типов событий и аннотаций.

Поддерживаются следующие типы:

  • byte.class
  • short.class
  • int.class
  • long.class
  • char.class
  • float.class
  • double.class
  • boolean.class
  • String.class
  • Class.class
  • Thread.class

Имя должно быть допустимым идентификатором Java (например, "maxThroughput"). Дополнительные сведения см. в разделах 3.8 и 3.9 спецификации языка Java.

Параметры:
type — тип, не null
name — имя, не null
annotations — аннотации дескрипторов значений, не null
Исключения:
IllegalArgumentException — если имя не является допустимым идентификатором Java

Подробное описание методов

getLabel

public String getLabel()
Возвращает удобочитаемое имя, описывающее значение (например, "Maximum Throughput").
Возвращает:
удобочитаемое имя или null, если оно отсутствует

getName

public String getName()
Возвращает имя значения (например, "maxThroughput").
Возвращает:
имя, не null

getDescription

public String getDescription()
Возвращает предложение с описанием значения (например, "Maximum throughput in the transaction system. Value is reset after each new batch.").
Возвращает:
описание или null, если оно отсутствует

getContentType

public String getContentType()
Возвращает текстовый идентификатор, указывающий, как интерпретируется или форматируется значение, представленное этим ValueDescriptor.

Например, если тип дескриптора значения — float, а значение события — 0.5f, тип содержимого "jdk.jfr.Percentage" подсказывает клиенту, что значение является процентом и должно отображаться как "50%".

JDK предоставляет следующие предопределенные типы содержимого:

  • jdk.jfr.Percentage
  • jdk.jfr.Timespan
  • jdk.jfr.Timestamp
  • jdk.jfr.Frequency
  • jdk.jfr.Flag
  • jdk.jfr.MemoryAddress
  • jdk.jfr.DataAmount
  • jdk.jfr.NetworkAddress

Пользовательские типы содержимого можно создавать с помощью класса ContentType.

Возвращает:
тип содержимого или null, если он отсутствует
См. также:
  • ContentType

getTypeName

public String getTypeName()
Возвращает полное имя класса типа, связанного с этим дескриптором значения.
Возвращает:
имя типа, не null
См. также:
  • getTypeId()

getTypeId

public long getTypeId()
Возвращает уникальный идентификатор типа в виртуальной машине Java (JVM). Идентификатор может различаться в разных экземплярах JVM.
Возвращает:
идентификатор типа, не отрицательный

isArray

public boolean isArray()
Возвращает, является ли этот дескриптор значения типом массива.
Возвращает:
true, если это тип массива; в противном случае false

getAnnotation

public <A extends Annotation> A getAnnotation(Class<A> annotationType)
Возвращает первую аннотацию указанного типа, если для этого дескриптора значения непосредственно присутствует элемент аннотации с таким же именем; в противном случае null.
Параметры типа:
A — тип аннотации, которую нужно найти и вернуть, если она присутствует
Параметры:
annotationType — объект Class, соответствующий типу аннотации, не null
Возвращает:
непосредственно присутствующую аннотацию этого элемента указанного типа либо null, если она отсутствует

getAnnotationElements

public List<AnnotationElement> getAnnotationElements()
Возвращает неизменяемый список элементов аннотаций для этого дескриптора значения.
Возвращает:
список аннотаций, не null

getFields

public List<ValueDescriptor> getFields()
Возвращает неизменяемый список дескрипторов значений, если тип является составным; в противном случае возвращает пустой список.
Возвращает:
список дескрипторов значений, не null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API