0N/A<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
0N/ACopyright (c) 2004, Oracle and/or its affiliates. All rights reserved. 0N/ADO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/AThis code is free software; you can redistribute it and/or modify it 0N/Aunder the terms of the GNU General Public License version 2 only, as 0N/Apublished by the Free Software Foundation. Oracle designates this 0N/Aparticular file as subject to the "Classpath" exception as provided 0N/Aby Oracle in the LICENSE file that accompanied this code. 0N/AThis code is distributed in the hope that it will be useful, but WITHOUT 0N/AANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/AFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/Aversion 2 for more details (a copy is included in the LICENSE file that 0N/Aaccompanied this code). 0N/AYou should have received a copy of the GNU General Public License version 0N/A2 along with this work; if not, write to the Free Software Foundation, 0N/AInc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 0N/APlease contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 0N/ACA 95054 USA or visit www.sun.com if you need additional information or 0N/A<
body bgcolor="white">
0N/AThe Mirror API is used to model the semantic structure of a program.
0N/AIt provides representations of the entities
0N/Adeclared in a program, such as classes, methods, and fields.
0N/AConstructs below the method level, such as
0N/Aindividual statements and expressions, are not represented.
0N/A<
p> Also included is support for writing
0N/Ato examine and process the annotations
0N/Aof program elements. An annotation processor may, as an example, create
0N/Anew source files and XML documents to be used in conjunction with the
0N/A<
h4> Characteristics of the API </
h4>
0N/AA program is represented at the language level, rather than at the
0N/Alevel of the virtual machine. Nested classes, for example, are
0N/Ahandled as first-class constructs,
0N/Arather than in the translated form understood by the VM.
0N/ABoth source code and compiled code (class files) may be modeled
0N/A<
p> Programs are modeled in their static, or build-time, form.
0N/Awhich provides run-time information about classes and objects.
0N/A<
p> The API does not provide direct support for generating new code.
0N/A<
h4> Declarations and Types </
h4>
0N/AThe mirror API represents program constructs principally through the
and its hierarchy of subinterfaces in the package {@link
program element such as a package, class, or method.
The interface hierarchy is depicted
interface and its hierarchy of subinterfaces in the
class and interface types, array types, type variables, and wildcards.
The interface hierarchy is depicted
<
p> The API makes a clear distinction between declarations and types.
This is most significant for generic types, where a single declaration
can define an infinite family of types. For example, the declaration of
and much more. Only the declaration can be annotated, for example,
and only a type can appear in a method signature.
<
p> A program being modeled may be incomplete, in that
it may depend on an unknown class or interface type.
This may be the result of a processing error such as a missing class file,
or perhaps the missing type is to be created by an annotation processor.
how such unknown types are handled.
<
h4> Utilities and Tool Support </
h4>
utilities to assist in the processing of declarations and types.
Included is support for using the visitor design pattern when
operating on declaration and type objects.
of annotation processors. It provides the mechanism for them to
interact with an annotation processing tool.