1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.lang.reflect; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.annotation.Annotation; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This interface provides reflective access to annotation information. 24f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 25f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.5 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface AnnotatedElement { 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns, for this element, the annotation with the specified type, or 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code null} if no annotation with the specified type is present 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (including inherited annotations). 33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param annotationType 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the type of the annotation to search for 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the annotation with the specified type or {@code null} 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NullPointerException 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code annotationType} is {@code null} 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project <T extends Annotation> T getAnnotation(Class<T> annotationType); 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns, for this element, an array containing all annotations (including 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * inherited annotations). If there are no annotations present, this method 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returns a zero length array. 46f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an array of all annotations for this element 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Annotation[] getAnnotations(); 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns, for this element, all annotations that are explicitly declared 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (not inherited). If there are no declared annotations present, this 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method returns a zero length array. 55f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an array of annotations declared for this element 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Annotation[] getDeclaredAnnotations(); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Indicates whether or not this element has an annotation with the 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified annotation type (including inherited annotations). 63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param annotationType 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the type of the annotation to search for 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the annotation exists, {@code false} otherwise 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NullPointerException 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if {@code annotationType} is {@code null} 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean isAnnotationPresent(Class<? extends Annotation> annotationType); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 72