Класс 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 |
Создает описатель значения, полезный для динамического создания типов событий и аннотаций. |
ValueDescriptor |
Создает описатель значения, полезный для динамического создания типов событий и аннотаций. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<A extends Annotation> |
getAnnotation |
Возвращает первую аннотацию для указанного типа, если элемент аннотации с таким же именем присутствует непосредственно для этого описателя значения, null в противном случае. |
List |
getAnnotationElements() |
Возвращает неизменяемый список элементов аннотаций для этого описателя значения. |
String |
getContentType() |
Возвращает текстовый идентификатор, который определяет, как значение, представленное этим ValueDescriptor, интерпретируется или форматируется. |
String |
getDescription() |
Возвращает предложение, описывающее значение (например, "Maximum
throughput in the transaction system. Value is reset after each new
batch."). |
List |
getFields() |
Возвращает неизменяемый список описателей значений, если тип является сложным, иначе пустой список. |
String |
getLabel() |
Возвращает удобочитаемое имя, описывающее значение (например, "Maximum Throughput"). |
String |
getName() |
Возвращает имя значения (например, "maxThroughput"). |
long |
getTypeId() |
Возвращает уникальный идентификатор типа в виртуальной машине Java (JVM). |
String |
getTypeName() |
Возвращает полное имя класса типа, связанного с этим описателем значения. |
boolean |
isArray() |
Возвращает, является ли этот описатель значения типом массива. |
Подробное описание конструкторов
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, если он отсутствует - См. также:
getTypeName
public String getTypeName()
- Возвращает:
- имя типа, не
null - См. также:
getTypeId
public long getTypeId()
- Возвращает:
- ИД типа, не отрицательное число
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, 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.
https://download.java.net/java/early_access/jdk24/docs/api/jdk.jfr/jdk/jfr/ValueDescriptor.html