Antes de começar por explicar de que se trata a reflexão, talvez seja melhor perceber o que é a Meta Programação. A Meta Programação consiste na escrita de programas que manipulam ou escrevem outros programas. Pode parecer um conceito um pouco esquisito à primeira vista, mas softwares como sejam debuggers ou softwares de profile são exemplos clássicos de meta programas largamente utilizados.
Os meta programas são escritos em meta linguagens, enquanto que os programas manipulados são escritos em linguagem objecto.
A reflexão não é mais nem menos que, a capacidade de uma linguagem ter como meta linguagem ela própria. Ou seja, com a reflexão uma entidade tem a capacidade de manipular a representação da sua estrutura e comportamento durante a sua própria execução.