模块  jdk.jfr
软件包  jdk.jfr

Class AnnotationElement


  • public final class AnnotationElement
    extends Object
    描述事件元数据,例如标签,描述和单元。

    以下示例显示了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();  
    从以下版本开始:
    9
    • 构造方法详细信息

      • AnnotationElement

        public AnnotationElement​(<? extends Annotation> annotationType,
                                 Map<String,​Object> values)
        创建用于动态定义事件的注释元素。

        支持的值类型为byteintshortlongdoublefloatbooleancharString 不支持枚举,数组和类。

        如果annotationType具有注释(直接存在,间接存在或关联),则递归地包括那些注释。 但是, annotationType和递归发现的任何注释都必须具有MetadataDefinition注释。

        要静态定义事件,请参阅Event类。

        参数
        annotationType - 接口扩展 java.lang.annotation.Annotation ,而不是 null
        values - 具有与指定注释接口的方法名称匹配的键的 Map
        异常
        IllegalArgumentException - 如果value / key为 null ,则使用不支持的值类型,或者使用与 annotationType中的签名不匹配的值/键
      • AnnotationElement

        public AnnotationElement​(<? extends Annotation> annotationType,
                                 Object value)
        创建用于动态定义事件的注释元素。

        支持的值类型为byteintshortlongdoublefloatbooleancharString 不支持枚举,数组和类。

        如果annotationType具有注释(直接存在,间接存在或关联),则递归地包括那些注释。 但是, annotationType和递归发现的任何注释都必须具有MetadataDefinition注释。

        要静态定义事件,请参阅Event类。

        参数
        annotationType - 接口扩展 java.lang.annotation.Annotation,而不是 null
        value - 与指定的 annotationTypevalue方法匹配的值
        异常
        IllegalArgumentException - 如果value / key为 null ,则使用不支持的值类型,或者使用与 annotationType中的签名不匹配的值/键
      • AnnotationElement

        public AnnotationElement​(<? extends Annotation> annotationType)
        创建用于动态定义事件的注释元素。

        支持的值类型为byteshortintlongdoublefloatbooleancharString 不支持枚举,数组和类。

        如果annotationType具有注释(直接存在,间接存在或关联),则递归地包括那些注释。 但是, annotationType和递归发现的任何注释都必须具有MetadataDefinition注释。

        要静态定义事件,请参阅Event类。

        参数
        annotationType - 接口扩展java.lang.annotation.Annotation,而不是 null
    • 方法详细信息

      • getValues

        public List<Object> getValues()
        以与此 AnnotationElement的值描述符匹配的顺序返回注释值的不可变列表。
        结果
        值列表,而不是 null
      • getValueDescriptors

        public List<ValueDescriptor> getValueDescriptors()
        返回描述此 AnnotationElement的注释值的不可变描述符列表。
        结果
        Annotation的值描述符列表,而不是 null
      • getAnnotationElements

        public List<AnnotationElement> getAnnotationElements()
        返回此 AnnotationElement的注释元素的不可变列表。
        结果
        元注释列表,而不是 null
      • getTypeName

        public String getTypeName()
        返回与此 AnnotationElement对应的注释类型的完全限定名称(例如, "jdk.jfr.Label" )。
        结果
        类型名称,而不是 null
      • getValue

        public Object getValue​(String name)
        返回此 AnnotationElement的值。
        参数
        name - 注释界面中方法的名称,而不是 null
        结果
        注释值,而不是 null
        异常
        IllegalArgumentException - 如果注释中不存在具有指定名称的方法
      • hasValue

        public boolean hasValue​(String name)
        返回 true如果具有指定名称的标注值,在此存在 AnnotationElement
        参数
        name - 要查找的注释界面中的方法名称,而不是 null
        结果
        true如果方法存在,否则为 false
      • getAnnotation

        public final <A> A getAnnotation​(<? extends Annotation> annotationType)
        如果存在具有相同名称的 AnnotationElement ,则返回指定类型的第一个注释,否则 null
        参数类型
        A - 要查询的注释的类型,如果存在则返回
        参数
        annotationType -所述 Class object对应于注释类型,而不是 null
        结果
        如果指定的注释类型存在,则此元素的注释,否则为 null
      • getTypeId

        public long getTypeId()
        返回此AnnotationElement的类型ID。

        ID是Java虚拟机(JVM)中类型的唯一标识符。 JVM实例之间的ID可能不同。

        结果
        类型ID,不是负面的