Classes in this package, along with
accommodate applications such as debuggers, interpreters, object
inspectors, class browsers, and services such as Object
Serialization and JavaBeans that need access to either the public
members of a target object (based on its runtime class) or the
members declared by a given class.
AccessibleObject allows suppression of access checks if
ReflectPermission is available.
Array provides static methods to dynamically create and
Java programming language and JVM modeling in core reflectionThe components of core reflection, which include types in this package as well as
Module, fundamentally present a JVM model of the entities in question rather than a Java programming language model. A Java compiler, such as
javac, translates Java source code into executable output that can be run on a JVM, primarily
classfiles. Compilers for source languages other than Java can and do target the JVM as well.
The translation process, including from Java language sources,
to executable output for the JVM is not a one-to-one
mapping. Structures present in the source language may have no
representation in the output and structures not present in
the source language may be present in the output. The latter are
called synthetic structures. Synthetic structures can
include methods, fields, parameters, classes and
interfaces. One particular kind of synthetic method is a
bridge method. It is possible a
synthetic structure may not be marked as such. In particular, not
class file versions support marking a parameter as
synthetic. A source language compiler generally has multiple ways
to translate a source program into a
representation. The translation may also depend on the version of
class file format being targeted as different
class file versions have different capabilities and features. In
some cases the modifiers present in the
representation may differ from the modifiers on the originating
element in the source language, including
final on a parameter and
classes and interfaces.
Besides differences in structural representation between the
source language and the JVM representation, core reflection also
exposes runtime specific information. For example, the class loaders and protection domains of a
Class are runtime concepts without a direct analogue in
- See Java Language Specification:
13.1 The Form of a Binary
- See Java Virtual Machine Specification:
1.2 The Java Virtual Machine
4.7.8 The Synthetic Attribute
5.3.1 Loading Using the Bootstrap Class Loader
5.3.2 Loading Using a User-defined Class Loader
AccessibleObjectclass is the base class for
Constructorobjects (known as reflected objects).
AnnotatedArrayTyperepresents the potentially annotated use of an array type, whose component type may itself represent the annotated use of a type.Represents an annotated construct of the program currently running in this VM.
AnnotatedParameterizedTyperepresents the potentially annotated use of a parameterized type, whose type arguments may themselves represent annotated uses of types.
AnnotatedTyperepresents the potentially annotated use of a type in the program currently running in this VM.
AnnotatedTypeVariablerepresents the potentially annotated use of a type variable, whose declaration may have bounds which themselves represent annotated uses of types.
AnnotatedWildcardTyperepresents the potentially annotated use of a wildcard type argument, whose upper or lower bounds may themselves represent annotated uses of types.The
Arrayclass provides static methods to dynamically create and access Java arrays.Constructor<T>
Constructorprovides information about, and access to, a single constructor for a class.A shared superclass for the common functionality of
Fieldprovides information about, and dynamic access to, a single field of a class or an interface.
GenericArrayTyperepresents an array type whose component type is either a parameterized type or a type variable.A common interface for all entities that declare type variables.Thrown when a syntactically malformed signature attribute is encountered by a reflective method that needs to interpret the generic signature information for a class or interface, method or constructor.Thrown when Java language access checks cannot be suppressed.
InvocationHandleris the interface implemented by the invocation handler of a proxy instance.InvocationTargetException is a checked exception that wraps an exception thrown by an invoked method or constructor.Thrown when a semantically malformed parameterized type is encountered by a reflective method that needs to instantiate it.Thrown when
the java.lang.reflect packageattempts to read method parameters from a class file and determines that one or more parameters are malformed.Member is an interface that reflects identifying information about a single member (a field or a method) or a constructor.A
Methodprovides information about, and access to, a single method on a class or interface.The Modifier class provides
staticmethods and constants to decode class and member access modifiers.Information about method parameters.ParameterizedType represents a parameterized type such as
Proxyprovides static methods for creating objects that act like instances of interfaces but allow for customized method invocation.A
RecordComponentprovides information about, and dynamic access to, a component of a record class.The Permission class for reflective operations.Type is the common superinterface for all types in the Java programming language.TypeVariable<D extends GenericDeclaration>TypeVariable is the common superinterface for type variables of kinds.Thrown by a method invocation on a proxy instance if its invocation handler's
invokemethod throws a checked exception (a
Throwablethat is not assignable to
Error) that is not assignable to any of the exception types declared in the
throwsclause of the method that was invoked on the proxy instance and dispatched to the invocation handler.WildcardType represents a wildcard type expression, such as
? extends Number, or
? super Integer.