< prev index next >

src/java.base/share/classes/java/lang/reflect/AnnotatedElement.java

Print this page




  91  *
  92  * <ul>
  93  *
  94  * <li><i>A</i> is directly or indirectly present on <i>E</i>; or
  95  *
  96  * <li>No annotation of <i>A</i> 's type is directly or indirectly
  97  * present on <i>E</i>, and <i>E</i> is a class, and <i>A</i>'s type
  98  * is inheritable, and <i>A</i> is associated with the superclass of
  99  * <i>E</i>.
 100  *
 101  * </ul>
 102  *
 103  * </ul>
 104  *
 105  * <p>The table below summarizes which kind of annotation presence
 106  * different methods in this interface examine.
 107  *
 108  * <table class="plain">
 109  * <caption>Overview of kind of presence detected by different AnnotatedElement methods</caption>
 110  * <thead>
 111  * <tr><th colspan=2></th><th colspan=4>Kind of Presence</th>
 112  * <tr><th colspan=2>Method</th><th>Directly Present</th><th>Indirectly Present</th><th>Present</th><th>Associated</th>






 113  * </thead>
 114  * <tbody>
 115  * <tr><td style="text-align:right">{@code T}</td><td>{@link #getAnnotation(Class) getAnnotation(Class&lt;T&gt;)}
 116  * <td></td><td></td><td>X</td><td></td>

 117  * </tr>
 118  * <tr><td style="text-align:right">{@code Annotation[]}</td><td>{@link #getAnnotations getAnnotations()}
 119  * <td></td><td></td><td>X</td><td></td>

 120  * </tr>
 121  * <tr><td style="text-align:right">{@code T[]}</td><td>{@link #getAnnotationsByType(Class) getAnnotationsByType(Class&lt;T&gt;)}
 122  * <td></td><td></td><td></td><td>X</td>

 123  * </tr>
 124  * <tr><td style="text-align:right">{@code T}</td><td>{@link #getDeclaredAnnotation(Class) getDeclaredAnnotation(Class&lt;T&gt;)}
 125  * <td>X</td><td></td><td></td><td></td>

 126  * </tr>
 127  * <tr><td style="text-align:right">{@code Annotation[]}</td><td>{@link #getDeclaredAnnotations getDeclaredAnnotations()}
 128  * <td>X</td><td></td><td></td><td></td>

 129  * </tr>
 130  * <tr><td style="text-align:right">{@code T[]}</td><td>{@link #getDeclaredAnnotationsByType(Class) getDeclaredAnnotationsByType(Class&lt;T&gt;)}
 131  * <td>X</td><td>X</td><td></td><td></td>

 132  * </tr>
 133  * </tbody>
 134  * </table>
 135  *
 136  * <p>For an invocation of {@code get[Declared]AnnotationsByType( Class <
 137  * T >)}, the order of annotations which are directly or indirectly
 138  * present on an element <i>E</i> is computed as if indirectly present
 139  * annotations on <i>E</i> are directly present on <i>E</i> in place
 140  * of their container annotation, in the order in which they appear in
 141  * the value element of the container annotation.
 142  *
 143  * <p>There are several compatibility concerns to keep in mind if an
 144  * annotation type <i>T</i> is originally <em>not</em> repeatable and
 145  * later modified to be repeatable.
 146  *
 147  * The containing annotation type for <i>T</i> is <i>TC</i>.
 148  *
 149  * <ul>
 150  *
 151  * <li>Modifying <i>T</i> to be repeatable is source and binary




  91  *
  92  * <ul>
  93  *
  94  * <li><i>A</i> is directly or indirectly present on <i>E</i>; or
  95  *
  96  * <li>No annotation of <i>A</i> 's type is directly or indirectly
  97  * present on <i>E</i>, and <i>E</i> is a class, and <i>A</i>'s type
  98  * is inheritable, and <i>A</i> is associated with the superclass of
  99  * <i>E</i>.
 100  *
 101  * </ul>
 102  *
 103  * </ul>
 104  *
 105  * <p>The table below summarizes which kind of annotation presence
 106  * different methods in this interface examine.
 107  *
 108  * <table class="plain">
 109  * <caption>Overview of kind of presence detected by different AnnotatedElement methods</caption>
 110  * <thead>
 111  * <tr><th colspan=2 scope="col">Method</th>
 112  *     <th colspan=4 scope="col">Kind of Presence</th>
 113  * <tr><th scope="col">Return Type</th>
 114  *     <th scope="col">Signature</th>
 115  *     <th scope="col">Directly Present</th>
 116  *     <th scope="col">Indirectly Present</th>
 117  *     <th scope="col">Present</th>
 118  *     <th scope="col">Associated</th>
 119  * </thead>
 120  * <tbody>
 121  * <tr><td style="text-align:right">{@code T}</td>
 122  * <th scope="row" style="font-weight:normal; text-align:left">{@link #getAnnotation(Class) getAnnotation(Class&lt;T&gt;)}
 123  * <td></td><td></td><td style="text-align:center">X</td><td></td>
 124  * </tr>
 125  * <tr><td style="text-align:right">{@code Annotation[]}</td>
 126  * <th scope="row" style="font-weight:normal; text-align:left">{@link #getAnnotations getAnnotations()}
 127  * <td></td><td></td><td style="text-align:center">X</td><td></td>
 128  * </tr>
 129  * <tr><td style="text-align:right">{@code T[]}</td>
 130  * <th scope="row" style="font-weight:normal; text-align:left">{@link #getAnnotationsByType(Class) getAnnotationsByType(Class&lt;T&gt;)}
 131  * <td></td><td></td><td></td><td style="text-align:center">X</td>
 132  * </tr>
 133  * <tr><td style="text-align:right">{@code T}</td>
 134  * <th scope="row" style="font-weight:normal; text-align:left">{@link #getDeclaredAnnotation(Class) getDeclaredAnnotation(Class&lt;T&gt;)}
 135  * <td style="text-align:center">X</td><td></td><td></td><td></td>
 136  * </tr>
 137  * <tr><td style="text-align:right">{@code Annotation[]}</td>
 138  * <th scope="row" style="font-weight:normal; text-align:left">{@link #getDeclaredAnnotations getDeclaredAnnotations()}
 139  * <td style="text-align:center">X</td><td></td><td></td><td></td>
 140  * </tr>
 141  * <tr><td style="text-align:right">{@code T[]}</td>
 142  * <th scope="row" style="font-weight:normal; text-align:left">{@link #getDeclaredAnnotationsByType(Class) getDeclaredAnnotationsByType(Class&lt;T&gt;)}
 143  * <td style="text-align:center">X</td><td style="text-align:center">X</td><td></td><td></td>
 144  * </tr>
 145  * </tbody>
 146  * </table>
 147  *
 148  * <p>For an invocation of {@code get[Declared]AnnotationsByType( Class <
 149  * T >)}, the order of annotations which are directly or indirectly
 150  * present on an element <i>E</i> is computed as if indirectly present
 151  * annotations on <i>E</i> are directly present on <i>E</i> in place
 152  * of their container annotation, in the order in which they appear in
 153  * the value element of the container annotation.
 154  *
 155  * <p>There are several compatibility concerns to keep in mind if an
 156  * annotation type <i>T</i> is originally <em>not</em> repeatable and
 157  * later modified to be repeatable.
 158  *
 159  * The containing annotation type for <i>T</i> is <i>TC</i>.
 160  *
 161  * <ul>
 162  *
 163  * <li>Modifying <i>T</i> to be repeatable is source and binary


< prev index next >