1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package signature.model; 18 19 /** 20 * {@code IAnnotationElement} models an annotation element which consist of a 21 * name and a value. 22 */ 23 public interface IAnnotationElement { 24 /** 25 * Returns the value of this annotation element. The type of this value is 26 * restricted to the possible value types for annotation elements. 27 * <p> 28 * The following types are possible: 29 * <ul> 30 * <li>a wrapper class for a primitive type 31 * <li>String (for String values) 32 * <li>IType (representing a class literal) FIXME Reference? Def? 33 * <li>IEnumConstant (representing an enum constant) 34 * <li>IAnnotation 35 * </ul> 36 * and (one-dimensional) arrays of the above types. 37 * 38 * @return the value of this annotation element 39 */ getValue()40 Object getValue(); 41 42 /** 43 * Returns the corresponding annotation field declaration. This declaration 44 * contains e.g. the name of this element, its type and its modifiers. The 45 * declaration also contains the default value of this element which is 46 * overwritten by this annotation element. 47 * 48 * @return the corresponding annotation field declaration 49 */ getDeclaringField()50 IAnnotationField getDeclaringField(); 51 52 } 53