Spec-Zone.ru › OpenJDK 21

Класс 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()
Возвращает, является ли этот дескриптор значения типом массива.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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
SecurityException - если менеджер безопасности присутствует и вызывающий код не имеет FlightRecorderPermission("registerEvent")

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
SecurityException - если менеджер безопасности присутствует и вызывающий код не имеет FlightRecorderPermission("registerEvent")

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

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

© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/jdk.jfr/jdk/jfr/ValueDescriptor.html

Spec-Zone.ru

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