next up previous contents
Next: Examples Up: Introduction Previous: Introduction   Contents

Terminology and Basic Concepts

A general definition of reflection in programming languages, given in [Demers and Malenfant], is:

Reflection is the ability of a program to manipulate as data something representing the state of the program during its own execution. There are two aspects of such manipulation: introspection and intercession. Introspection is the ability for a program to observe and therefore reason about its own state. Intercession is the ability for a program to modify its own execution state or alter its own interpretation or meaning. Both aspects require a mechanism for encoding execution state as data; providing such an encoding is called reification.

[Ferber] discusses several models of reflection. The model which corresponds most to Java is what he calls the specific meta-object model in which each object has a meta-object representing all its otherwise implicit information. Meta-objects are instances of a class META-OBJECT or one of its subclasses. As we will see below, the Java class Class corresponds to his META-OBJECT.

Reflection vs. reification...

History: lots of Lisp stuff. Smalltalk?


next up previous contents
Next: Examples Up: Introduction Previous: Introduction   Contents
Nadeem Hamid 2000-07-24