Refleksija (programavimas)

Refleksija – galimybė programinėmis priemonėmis išgauti aukšto lygio programos struktūrą – informaciją apie tipus, klases, klasių metodus ir pan. Kai kuriose programavimo kalbose refleksija suteikia galimybę modifikuoti programos struktūrą (dinamiškai kurti klases, funkcijas). Refleksija būdinga aukšto lygio programavimo kalboms, tokios kalbos kompiliavimo metu ne tik sukuria vykdymo kodą, bet ir išsaugo metainformaciją apie struktūrą, todėl atsiranda galimybė programos kode tirti šiuos metaduomenis, pavyzdžiui, dinamiškai perrinkti tam tikros iš anksto nežinomos klasės metodus, taip pat juos vykdyti.

Vienaip ar kitaip dinaminę refleksiją palaiko nemaža dalis interpretuojamų kalbų, pilnai – objektinės kalbos. Kai kurios refleksiją palaikančios kalbos:
 SmallTalk
 Lisp
 Java
 Objective-C
 .NET kalbos (C#, VB.NET)
 PHP
 JavaScript
 Python
 Ruby

Programavimas