The package java.lang.reflect is new as
of Java 1.1. It contains
classes and interfaces that support the Reflection API.
Reflection refers to the ability of a class to reflect upon itself,
or look inside of itself, to see what it can do.
The Reflection API makes it possible to:

Discover the variables, methods, and constructors of any class.

Create an instance of any class using any available constructor of
that class, even if the class initiating the creation was not
compiled with any information about the class to be instantiated.

Access the variables of any object, even if the accessing class was not
compiled with any information about the class to be accessed.

Call the methods of any object, even if the calling class was not
compiled with any information about the class that contains the methods.

Create an array of objects that are instances of any class, even if
the creating class was not compiled with any information about the
class.

These capabilities are implemented by the
java.lang.Class class and the classes in the
java.lang.reflect package.
Figure 13.1 shows the class hierarchy for
the java.lang.reflect package.

The JavaBeans API supports a mechanism for customizing
objects that is based on being able to discover their public
variables, methods, and constructors. See the forthcoming
Developing Java Beans from O'Reilly & Associates
for more information about the JavaBeans API.

The object serialization functionality in java.io
is built on top of the Reflection API.
Object serialization allows arbitrary objects to be written
to a stream of bytes and then read back later as objects.

The Array
class provides static methods to manipulate arbitrary
arrays in Java.
There are methods to set and retrieve elements in an array, determine the
size of an array, and create a new instance of an array.

The Array
class is used to create array objects and
manipulate their elements. The Array class is not
used to represent array types. Because arrays
in Java are objects, array
types are represented by Class
objects.

This method returns the object at the given index in the array. If the
array contains values of a primitive type, the value at the given index
is wrapped in an appropriate object, and the object is returned.

If the given object is not an array, or if it represents an array of primitive
values, and the given value cannot be unwrapped and converted to that primitive
type.

ArrayIndexOutOfBoundsException

If the given index is invalid.

NullPointerException

If array is null.

Description

This method sets the object at the given index in the array to the specified
value. If the array contains values of a primitive type, the given value
is automatically unwrapped before it is put in the array.