Refleksija (programavimas)
| Dėmesio! Straipsnis ar jo dalis neturi išnašų į patikimus šaltinius. Dėl to medžiaga gali būti nepatikima. Pagal Vikipedijos nuostatas, nepatikrinama informacija gali būti trinama. Paieškokite patikimų šaltinių ir paremkite medžiagą išnašomis į šaltinius. |
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