A capability of some object-oriented programming languages to determine the type of an object at runtime.
Some OOP languages providing Type Introspection ability : Ruby, Objective-C, C++, Java, PHP, Perl, Python, Object Pascal, Actionscript (as3)
The introspection is done differently, depending on the form of program, it is performed upon: inspecting a source code or compiled byte-code is called compile-time introspection, while inspecting properties of running code is a run-time introspection.
For example, Java supports both types of introspection: users of run-time introspection typically perform it via reflection, while compile-time introspection can be implemented with bytecode-manipulation tools or annotation-processing.