Reflection enables Java code to discover information about the fields, methods
and constructors of loaded classes, and to use reflected fields, methods, and
constructors to operate on their underlying counterparts, within security
restrictions. The API accommodates applications 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. It also allows programs to suppress default
reflective access control.
Tutorials and Programmer's Guides