Класс 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() |
Возвращает, является ли этот дескриптор значения типом массива. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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, если он отсутствует - См. также:
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.