智能客服
你问我答,随时在线为你解决问题

























您当前正在浏览HarmonyOS开发者3.0版本配套的开发者文档,对应API能力级别为API 8 Release。此版本文档已归档不再维护,推荐您使用HarmonyOS NEXT版本。
public interface AnnotatedElement |
The getAnnotationsByType(java.lang.Class) and getDeclaredAnnotationsByType(java.lang.Class) methods support multiple annotations of the same type on an element. If the argument to either method is a repeatable annotation type (JLS 9.6), then the method will "look through" a container annotation (JLS 9.7), if present, and return any annotations inside the container. Container annotations may be generated at compile-time to wrap multiple annotations of the argument type.
The terms directly present, indirectly present, present, and associated are used throughout this interface to describe precisely which annotations are returned by methods:
The table below summarizes which kind of annotation presence different methods in this interface examine.
For an invocation of get[Declared]AnnotationsByType( Class < T >), the order of annotations which are directly or indirectly present on an element E is computed as if indirectly present annotations on E are directly present on E in place of their container annotation, in the order in which they appear in the value element of the container annotation.
There are several compatibility concerns to keep in mind if an annotation type T is originally not repeatable and later modified to be repeatable. The containing annotation type for T is TC.
If an annotation returned by a method in this interface contains (directly or indirectly) a Class-valued member referring to a class that is not accessible in this VM, attempting to read the class by calling the relevant Class-returning method on the returned annotation will result in a TypeNotPresentException.
Similarly, attempting to read an enum-valued member will result in a EnumConstantNotPresentException if the enum constant in the annotation is no longer present in the enum type.
If an annotation type T is (meta-)annotated with an @Repeatable annotation whose value element indicates a type TC, but TC does not declare a value() method with a return type of T[], then an exception of type AnnotationFormatError is thrown.
Finally, attempting to read a member whose definition has evolved incompatibly will result in a AnnotationTypeMismatchException or an IncompleteAnnotationException.
Since:
1.5See Also:
EnumConstantNotPresentException, TypeNotPresentException, AnnotationFormatError, AnnotationTypeMismatchException, IncompleteAnnotationExceptionModifier and Type | Method | Description |
|---|---|---|
<T extends Annotation>T | getAnnotation(Class<T> annotationClass) | Returns this element's annotation for the specified type if such an annotation is present, else null. |
Returns annotations that are present on this element. | ||
default <T extends Annotation>T[] | getAnnotationsByType(Class<T> annotationClass) | Returns annotations that are associated with this element. |
default <T extends Annotation>T | getDeclaredAnnotation(Class<T> annotationClass) | Returns this element's annotation for the specified type if such an annotation is directly present, else null. |
Returns annotations that are directly present on this element. | ||
default <T extends Annotation>T[] | getDeclaredAnnotationsByType(Class<T> annotationClass) | Returns this element's annotation(s) for the specified type if such annotations are either directly present or indirectly present. |
default boolean | isAnnotationPresent(Class<? extends Annotation> annotationClass) | Returns true if an annotation for the specified type is present on this element, else false. |
default boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
Returns true if an annotation for the specified type is present on this element, else false. This method is designed primarily for convenient access to marker annotations.The truth value returned by this method is equivalent to: getAnnotation(annotationClass) != null
The body of the default method is specified to be the code above.
Parameters:
Parameter Name | Parameter Description |
|---|---|
annotationClass | the Class object corresponding to the annotation type |
Returns:
true if an annotation for the specified annotation type is present on this element, else false
Throws:
Throw Name | Throw Description |
|---|---|
if the given annotation class is null |
Since:
1.5
<T extends Annotation> T getAnnotation(Class<T> annotationClass)
Returns this element's annotation for the specified type if such an annotation is present, else null.Type Parameters:
Type Parameter Name | Type Parameter Description |
|---|---|
T | the type of the annotation to query for and return if present |
Parameters:
Parameter Name | Parameter Description |
|---|---|
annotationClass | the Class object corresponding to the annotation type |
Returns:
this element's annotation for the specified annotation type if present on this element, else null
Throws:
Throw Name | Throw Description |
|---|---|
if the given annotation class is null |
Since:
1.5
Annotation[] getAnnotations()
Returns annotations that are present on this element. If there are no annotations present on this element, the return value is an array of length 0. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.Returns:
annotations present on this element
Since:
1.5
default <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass)
Returns annotations that are associated with this element. If there are no annotations associated with this element, the return value is an array of length 0. The difference between this method and getAnnotation(java.lang.Class) is that this method detects if its argument is a repeatable annotation type (JLS 9.6), and if so, attempts to find one or more annotations of that type by "looking through" a container annotation. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.Type Parameters:
Type Parameter Name | Type Parameter Description |
|---|---|
T | the type of the annotation to query for and return if present |
Parameters:
Parameter Name | Parameter Description |
|---|---|
annotationClass | the Class object corresponding to the annotation type |
Returns:
all this element's annotations for the specified annotation type if associated with this element, else an array of length zero
Throws:
Throw Name | Throw Description |
|---|---|
if the given annotation class is null |
Since:
1.8
default <T extends Annotation> T getDeclaredAnnotation(Class<T> annotationClass)
Returns this element's annotation for the specified type if such an annotation is directly present, else null. This method ignores inherited annotations. (Returns null if no annotations are directly present on this element.)Type Parameters:
Type Parameter Name | Type Parameter Description |
|---|---|
T | the type of the annotation to query for and return if directly present |
Parameters:
Parameter Name | Parameter Description |
|---|---|
annotationClass | the Class object corresponding to the annotation type |
Returns:
this element's annotation for the specified annotation type if directly present on this element, else null
Throws:
Throw Name | Throw Description |
|---|---|
if the given annotation class is null |
Since:
1.8
default <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass)
Returns this element's annotation(s) for the specified type if such annotations are either directly present or indirectly present. This method ignores inherited annotations. If there are no specified annotations directly or indirectly present on this element, the return value is an array of length 0. The difference between this method and getDeclaredAnnotation(java.lang.Class) is that this method detects if its argument is a repeatable annotation type (JLS 9.6), and if so, attempts to find one or more annotations of that type by "looking through" a container annotation if one is present. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.Type Parameters:
Type Parameter Name | Type Parameter Description |
|---|---|
T | the type of the annotation to query for and return if directly or indirectly present |
Parameters:
Parameter Name | Parameter Description |
|---|---|
annotationClass | the Class object corresponding to the annotation type |
Returns:
all this element's annotations for the specified annotation type if directly or indirectly present on this element, else an array of length zero
Throws:
Throw Name | Throw Description |
|---|---|
if the given annotation class is null |
Since:
1.8
Annotation[] getDeclaredAnnotations()
Returns annotations that are directly present on this element. This method ignores inherited annotations. If there are no annotations directly present on this element, the return value is an array of length 0. The caller of this method is free to modify the returned array; it will have no effect on the arrays returned to other callers.Returns:
annotations directly present on this element
Since:
1.5
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功