41 |
import java.lang.annotation.Annotation; |
import java.lang.annotation.Annotation; |
42 |
|
|
43 |
/** |
/** |
44 |
|
* <p> |
45 |
|
* Represents an element that can be annotated. The methods of this interface |
46 |
|
* provide reflection-based access to the annotations associated with a |
47 |
|
* particular element, such as a class, field, method or package. Each |
48 |
|
* annotation returned by these methods is both immutable and serializable. |
49 |
|
* The returned arrays may be freely modified, without any effect on the |
50 |
|
* arrays returned to future callers. |
51 |
|
* </p> |
52 |
|
* <p> |
53 |
|
* If an annotation refers to a type or enumeration constant that is |
54 |
|
* inaccessible, then a <code>TypeNotPresentException</code> or |
55 |
|
* <code>EnumConstantNotPresentException</code> will be thrown. Likewise, |
56 |
|
* invalid annotations will produce either a |
57 |
|
* <code>AnnotationTypeMismatchException</code> or |
58 |
|
* <code>IncompleteAnnotationException</code>. |
59 |
|
* </p> |
60 |
|
* |
61 |
* @author Tom Tromey (tromey@redhat.com) |
* @author Tom Tromey (tromey@redhat.com) |
62 |
* @author Andrew John Hughes (gnu_andrew@member.fsf.org) |
* @author Andrew John Hughes (gnu_andrew@member.fsf.org) |
63 |
* @since 1.5 |
* @since 1.5 |
64 |
*/ |
*/ |
65 |
public interface AnnotatedElement |
public interface AnnotatedElement |
66 |
{ |
{ |
67 |
<T extends Annotation> T getAnnotation(Class<T> annoType); |
|
68 |
|
/** |
69 |
|
* Returns the element's annotation for the specified annotation type, |
70 |
|
* or <code>null</code> if no such annotation exists. |
71 |
|
* |
72 |
|
* @param annotationClass the type of annotation to look for. |
73 |
|
* @return this element's annotation for the specified type, or |
74 |
|
* <code>null</code> if no such annotation exists. |
75 |
|
* @throws NullPointerException if the annotation class is <code>null</code>. |
76 |
|
*/ |
77 |
|
<T extends Annotation> T getAnnotation(Class<T> annotationClass); |
78 |
|
|
79 |
|
/** |
80 |
|
* Returns all annotations associated with the element. If there are |
81 |
|
* no annotations associated with the element, then a zero-length array |
82 |
|
* will be returned. The returned array may be modified by the client |
83 |
|
* code, but this will have no effect on the annotation content of the |
84 |
|
* element, and hence no effect on the return value of this method for |
85 |
|
* future callers. |
86 |
|
* |
87 |
|
* @return this element's annotations. |
88 |
|
*/ |
89 |
Annotation[] getAnnotations(); |
Annotation[] getAnnotations(); |
90 |
Annotation[] getDeclaredAnnotation(); |
|
91 |
boolean isAnnotationPresent(Class<? extends Annotation> annoType); |
/** |
92 |
|
* Returns all annotations directly defined by the element. If there are |
93 |
|
* no annotations directly associated with the element, then a zero-length |
94 |
|
* array will be returned. The returned array may be modified by the client |
95 |
|
* code, but this will have no effect on the annotation content of this |
96 |
|
* class, and hence no effect on the return value of this method for |
97 |
|
* future callers. |
98 |
|
* |
99 |
|
* @return the annotations directly defined by the element. |
100 |
|
* @since 1.5 |
101 |
|
*/ |
102 |
|
Annotation[] getDeclaredAnnotations(); |
103 |
|
|
104 |
|
/** |
105 |
|
* Returns true if an annotation for the specified type is associated |
106 |
|
* with the element. This is primarily a short-hand for using marker |
107 |
|
* annotations. |
108 |
|
* |
109 |
|
* @param annotationClass the type of annotation to look for. |
110 |
|
* @return true if an annotation exists for the specified type. |
111 |
|
* @since 1.5 |
112 |
|
*/ |
113 |
|
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass); |
114 |
|
|
115 |
} |
} |