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<T>)} 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<T>)} 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<T>)} 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<T>)} 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<T>)} 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<T>)} 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<T>)} 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<T>)} 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 |