Reflection is the ability of a program to examine its own structure, particularly through types; it’s a form of meta programming.