java.lang.Object
jdk.jfr.AnnotationElement
描述事件元数据,如标签、描述和单位。
以下示例展示了如何使用AnnotationElement
动态定义事件。
List<AnnotationElement> typeAnnotations = new ArrayList<>();
typeAnnotations.add(new AnnotationElement(Name.class, "com.example.HelloWorld"));
typeAnnotations.add(new AnnotationElement(Label.class, "Hello World"));
typeAnnotations.add(new AnnotationElement(Description.class, "Helps programmer getting started"));
List<AnnotationElement> fieldAnnotations = new ArrayList<>();
fieldAnnotations.add(new AnnotationElement(Label.class, "Message"));
List<ValueDescriptor> fields = new ArrayList<>();
fields.add(new ValueDescriptor(String.class, "message", fieldAnnotations));
EventFactory f = EventFactory.create(typeAnnotations, fields);
Event event = f.newEvent();
event.commit();
- 自 JDK 9 起:
- 9
-
Constructor Summary
ConstructorDescriptionAnnotationElement
(Class<? extends Annotation> annotationType) 创建一个用于动态定义事件的注解元素。AnnotationElement
(Class<? extends Annotation> annotationType, Object value) 创建一个用于动态定义事件的注解元素。AnnotationElement
(Class<? extends Annotation> annotationType, Map<String, Object> values) 创建一个用于动态定义事件的注解元素。 -
Method Summary
Modifier and TypeMethodDescriptionfinal <A> A
getAnnotation
(Class<? extends Annotation> annotationType) 如果存在具有相同名称的AnnotationElement
,则返回指定类型的第一个注解,否则返回null
。返回此AnnotationElement
的不可变注解元素列表。long
返回此AnnotationElement
的类型 ID。返回与此AnnotationElement
对应的注解类型的完全限定名称(例如,"jdk.jfr.Label"
)。返回此AnnotationElement
的值。返回描述此AnnotationElement
的注解值的不可变描述符列表。返回按照此AnnotationElement
的值描述符顺序排列的注解值的不可变列表。boolean
如果在此AnnotationElement
中存在具有指定名称的注解值,则返回true
。
-
Constructor Details
-
AnnotationElement
创建一个用于动态定义事件的注解元素。支持的值类型包括
byte
、int
、short
、long
、double
、float
、boolean
、char
和String
。不支持枚举、数组和类。如果
annotationType
具有注解(直接存在、间接存在或关联的),则这些注解将被递归包含。但是,annotationType
和递归找到的任何注解都必须具有MetadataDefinition
注解。要静态定义事件,请参见
Event
类。- 参数:
-
annotationType
- 扩展java.lang.annotation.Annotation
的接口,不能为空 -
values
- 一个带有与指定注解接口的方法名匹配的键的Map
- 抛出:
-
IllegalArgumentException
- 如果值/键为null
,使用了不受支持的值类型,或使用了与annotationType
中的签名不匹配的值/键
-
AnnotationElement
创建一个用于动态定义事件的注解元素。支持的值类型包括
byte
、int
、short
、long
、double
、float
、boolean
、char
和String
。不支持枚举、数组和类。如果
annotationType
具有注解(直接存在、间接存在或关联的),则这些注解将被递归包含。但是,annotationType
和递归找到的任何注解都必须具有MetadataDefinition
注解。要静态定义事件,请参见
Event
类。- 参数:
-
annotationType
- 扩展java.lang.annotation.Annotation
的接口,不能为空 -
value
- 与指定annotationType
的value
方法匹配的值 - 抛出:
-
IllegalArgumentException
- 如果值/键为null
,使用了不受支持的值类型,或使用了与annotationType
中的签名不匹配的值/键
-
AnnotationElement
创建一个用于动态定义事件的注解元素。支持的值类型包括
byte
、short
、int
、long
、double
、float
、boolean
、char
和String
。不支持枚举、数组和类。如果
annotationType
具有注解(直接存在、间接存在或关联的),则这些注解将被递归包含。但是,annotationType
和递归找到的任何注解都必须具有MetadataDefinition
注解。要静态定义事件,请参见
Event
类。- 参数:
-
annotationType
- 扩展java.lang.annotation.Annotation的接口,不能为空
-
-
Method Details
-
getValues
返回按照此AnnotationElement
的值描述符顺序排列的注解值的不可变列表。- 返回:
- 值列表,不能为空
-
getValueDescriptors
返回描述此AnnotationElement
的注解值的不可变描述符列表。- 返回:
-
此
Annotation
的值描述符列表,不能为空
-
getAnnotationElements
返回此AnnotationElement
的不可变注解元素列表。- 返回:
- 元注解列表,不能为空
-
getTypeName
返回与此AnnotationElement
对应的注解类型的完全限定名称(例如,"jdk.jfr.Label"
)。- 返回:
- 类型名称,不能为空
-
getValue
返回此AnnotationElement
的值。- 参数:
-
name
- 注解接口中的方法名称,不能为空 - 返回:
- 注解值,不能为空
- 抛出:
-
IllegalArgumentException
- 如果注解中不存在指定名称的方法
-
hasValue
如果在此AnnotationElement
中存在具有指定名称的注解值,则返回true
。- 参数:
-
name
- 要查找的注解接口中的方法名称,不能为空 - 返回:
-
如果方法存在则返回
true
,否则返回false
-
getAnnotation
如果存在具有相同名称的AnnotationElement
,则返回指定类型的第一个注解,否则返回null
。- 类型参数:
-
A
- 要查询并返回的注解类型 - 参数:
-
annotationType
- 与注解类型对应的Class对象
,不能为空 - 返回:
-
如果存在指定注解类型的元素注解,则返回该元素的注解,否则返回
null
-
getTypeId
public long getTypeId()返回此AnnotationElement
的类型 ID。ID是Java虚拟机(JVM)中类型的唯一标识符。ID在不同的JVM实例之间可能不相同。
- 返回:
- 类型 ID,非负数
-