In order to support fields of the same name in subclasses we are now prefixing them with name of the class that defines them. To provide convenient way to access them from generated bytecode and also directly from JavaScript, there is a getter/setter function for each field. It starts with _ followed by the field name. If called with a parameter, it sets the field, with a parameter it just returns it.
2 * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
26 package java.lang.reflect;
28 import java.lang.annotation.Annotation;
31 * Represents an annotated element of the program currently running in this
32 * VM. This interface allows annotations to be read reflectively. All
33 * annotations returned by methods in this interface are immutable and
34 * serializable. It is permissible for the caller to modify the
35 * arrays returned by accessors for array-valued enum members; it will
36 * have no affect on the arrays returned to other callers.
38 * <p>If an annotation returned by a method in this interface contains
39 * (directly or indirectly) a {@link Class}-valued member referring to
40 * a class that is not accessible in this VM, attempting to read the class
41 * by calling the relevant Class-returning method on the returned annotation
42 * will result in a {@link TypeNotPresentException}.
44 * <p>Similarly, attempting to read an enum-valued member will result in
45 * a {@link EnumConstantNotPresentException} if the enum constant in the
46 * annotation is no longer present in the enum type.
48 * <p>Finally, Attempting to read a member whose definition has evolved
49 * incompatibly will result in a {@link
50 * java.lang.annotation.AnnotationTypeMismatchException} or an
51 * {@link java.lang.annotation.IncompleteAnnotationException}.
53 * @see java.lang.EnumConstantNotPresentException
54 * @see java.lang.TypeNotPresentException
55 * @see java.lang.annotation.AnnotationFormatError
56 * @see java.lang.annotation.AnnotationTypeMismatchException
57 * @see java.lang.annotation.IncompleteAnnotationException
61 public interface AnnotatedElement {
63 * Returns true if an annotation for the specified type
64 * is present on this element, else false. This method
65 * is designed primarily for convenient access to marker annotations.
67 * @param annotationClass the Class object corresponding to the
69 * @return true if an annotation for the specified annotation
70 * type is present on this element, else false
71 * @throws NullPointerException if the given annotation class is null
74 boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);
77 * Returns this element's annotation for the specified type if
78 * such an annotation is present, else null.
80 * @param annotationClass the Class object corresponding to the
82 * @return this element's annotation for the specified annotation type if
83 * present on this element, else null
84 * @throws NullPointerException if the given annotation class is null
87 <T extends Annotation> T getAnnotation(Class<T> annotationClass);
90 * Returns all annotations present on this element. (Returns an array
91 * of length zero if this element has no annotations.) The caller of
92 * this method is free to modify the returned array; it will have no
93 * effect on the arrays returned to other callers.
95 * @return all annotations present on this element
98 Annotation[] getAnnotations();
101 * Returns all annotations that are directly present on this
102 * element. Unlike the other methods in this interface, this method
103 * ignores inherited annotations. (Returns an array of length zero if
104 * no annotations are directly present on this element.) The caller of
105 * this method is free to modify the returned array; it will have no
106 * effect on the arrays returned to other callers.
108 * @return All annotations directly present on this element
111 Annotation[] getDeclaredAnnotations();