0N/A<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
0N/A<html>
0N/A<head>
0N/A<!--
0N/A
553N/ACopyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
0N/ADO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A
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
553N/Apublished by the Free Software Foundation. Oracle designates this
0N/Aparticular file as subject to the "Classpath" exception as provided
553N/Aby Oracle in the LICENSE file that accompanied this code.
0N/A
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/A
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/A
556N/APlease contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
556N/Aor visit www.oracle.com if you need additional information or have any
556N/Aquestions.
0N/A-->
0N/A</head>
0N/A
0N/A<body bgcolor="white">
0N/A
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
0N/A<p> Also included is support for writing
0N/A{@linkplain com.sun.mirror.apt.AnnotationProcessor annotation processors}
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/Aoriginal code.
0N/A
0N/A
0N/A<h4> Characteristics of the API </h4>
0N/A
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/Ain this way.
0N/A
0N/A<p> Programs are modeled in their static, or build-time, form.
0N/AThis differs from the {@linkplain java.lang.reflect reflection} API,
0N/Awhich provides run-time information about classes and objects.
0N/A
0N/A<p> The API does not provide direct support for generating new code.
0N/A
0N/A
0N/A<h4> Declarations and Types </h4>
0N/A
0N/AThe mirror API represents program constructs principally through the
0N/A{@link com.sun.mirror.declaration.Declaration} interface
0N/Aand its hierarchy of subinterfaces in the package {@link
0N/Acom.sun.mirror.declaration}. A <tt>Declaration</tt> represents a
0N/Aprogram element such as a package, class, or method.
0N/AThe interface hierarchy is depicted
0N/A<a href="com/sun/mirror/declaration/package-tree.html"> here</a>.
0N/A
0N/A<p> Types are represented by the {@link com.sun.mirror.type.TypeMirror}
0N/Ainterface and its hierarchy of subinterfaces in the
0N/Apackage {@link com.sun.mirror.type}. Types include primitive types,
0N/Aclass and interface types, array types, type variables, and wildcards.
0N/AThe interface hierarchy is depicted
0N/A<a href="com/sun/mirror/type/package-tree.html"> here</a>.
0N/A
0N/A<p> The API makes a clear distinction between declarations and types.
0N/AThis is most significant for generic types, where a single declaration
0N/Acan define an infinite family of types. For example, the declaration of
0N/A<tt>java.util.Set</tt> defines the raw type <tt>java.util.Set</tt>,
0N/Athe parameterized type {@code java.util.Set<String>},
0N/Aand much more. Only the declaration can be annotated, for example,
0N/Aand only a type can appear in a method signature.
0N/A
0N/A<p> A program being modeled may be incomplete, in that
0N/Ait may depend on an unknown class or interface type.
0N/AThis may be the result of a processing error such as a missing class file,
0N/Aor perhaps the missing type is to be created by an annotation processor.
0N/ASee {@link com.sun.mirror.type.DeclaredType} for information on
0N/Ahow such unknown types are handled.
0N/A
0N/A
0N/A<h4> Utilities and Tool Support </h4>
0N/A
0N/AThe {@link com.sun.mirror.util} package provides
0N/Autilities to assist in the processing of declarations and types.
0N/AIncluded is support for using the visitor design pattern when
0N/Aoperating on declaration and type objects.
0N/A
0N/A<p> The {@link com.sun.mirror.apt} package supports the writing
0N/Aof annotation processors. It provides the mechanism for them to
0N/Ainteract with an annotation processing tool.
0N/A
0N/A
0N/A@since 1.5
0N/A
0N/A</body>
0N/A</html>