# java.lang.reflect

Provides classes and interfaces for obtaining reflective information about classes and objects. Reflection allows programmatic access to information about the fields, methods and constructors of loaded classes, and the use of reflected fields, methods, and constructors to operate on their underlying counterparts, within security restrictions.

`AccessibleObject` allows suppression of access checks if
the necessary `ReflectPermission` is available.

`Array` provides static methods to dynamically create and
access arrays.

Classes in this package, along with `java.lang.Class`
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.

### Interfaces

|---|---|
| [AnnotatedElement](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/AnnotatedElement.html) | Represents an annotated element of the program currently running in this VM. |
| [GenericArrayType](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/GenericArrayType.html) | `GenericArrayType` represents an array type whose component type is either a parameterized type or a type variable. |
| [GenericDeclaration](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/GenericDeclaration.html) | A common interface for all entities that declare type variables. |
| [InvocationHandler](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/InvocationHandler.html) | `InvocationHandler` is the interface implemented by the *invocation handler* of a proxy instance. |
| [Member](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Member.html) | Member is an interface that reflects identifying information about a single member (a field or a method) or a constructor. |
| [ParameterizedType](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/ParameterizedType.html) | ParameterizedType represents a parameterized type such as Collection\<String\>. |
| [Type](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Type.html) | Type is the common superinterface for all types in the Java programming language. |
| [WildcardType](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/WildcardType.html) | WildcardType represents a wildcard type expression, such as `?`, `? extends Number`, or `? super Integer`. |

### Classes

|---|---|
| [AccessibleObject](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/AccessibleObject.html) | The AccessibleObject class is the base class for Field, Method and Constructor objects. |
| [Array](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Array.html) | The `Array` class provides static methods to dynamically create and access Java arrays. |
| [Constructor](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Constructor.html)\<T\> | `Constructor` provides information about, and access to, a single constructor for a class. |
| [Executable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Executable.html) | A shared superclass for the common functionality of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Method.html` and `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Constructor.html`. |
| [Field](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Field.html) | A `Field` provides information about, and dynamic access to, a single field of a class or an interface. |
| [Method](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Method.html) | A `Method` provides information about, and access to, a single method on a class or interface. |
| [Modifier](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Modifier.html) | The Modifier class provides `static` methods and constants to decode class and member access modifiers. |
| [Proxy](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/Proxy.html) | `Proxy` provides static methods for creating dynamic proxy classes and instances, and it is also the superclass of all dynamic proxy classes created by those methods. |
| [ReflectPermission](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/ReflectPermission.html) | Legacy security code; do not use. |

### Exceptions

|---|---|
| [InvocationTargetException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/InvocationTargetException.html) | InvocationTargetException is a checked exception that wraps an exception thrown by an invoked method or constructor. |
| [MalformedParameterizedTypeException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/MalformedParameterizedTypeException.html) | Thrown when a semantically malformed parameterized type is encountered by a reflective method that needs to instantiate it. |
| [UndeclaredThrowableException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/UndeclaredThrowableException.html) | Thrown by a method invocation on a proxy instance if its invocation handler's `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/InvocationHandler.html#invoke(java.lang.Object,%20java.lang.reflect.Method,%20java.lang.Object[])` method throws a checked exception (a `Throwable` that is not assignable to `RuntimeException` or `Error`) that is not assignable to any of the exception types declared in the `throws` clause of the method that was invoked on the proxy instance and dispatched to the invocation handler. |

### Errors

|---|---|
| [GenericSignatureFormatError](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/reflect/GenericSignatureFormatError.html) | Thrown when a syntactically malformed signature attribute is encountered by a reflective method that needs to interpret the generic signature information for a type, method or constructor. |