リフレクション (情報工学)

情報工学においてリフレクション (reflection) とは、 プログラムの実行過程でプログラム自身の構造を読み取ったり書き換えたりする技術のことを指す。

概要

日本語では 自己言及と呼ばれる。通常リフレクションというと動的(実行時)リフレクションのことを指すが、静的(コンパイル時)リフレクションをサポートする プログラミング言語もある。リフレクションは SmalltalkJava.NET Frameworkのような 仮想機械インタプリタ上で実行されることを想定した言語でサポートされることが多く、 C言語のような 機械語として出力されることを想定した言語でサポートされることは少ない。

一般に、リフレクションとは オブジェクトがそれ自身の構造や計算上の意味を取得することを可能にするものである。リフレクションによる プログラミングパラダイムリフレクティブプログラミング (reflective programming) という。

通常、プログラムの ソースコードコンパイルされると、プログラムの構造などの情報は低レベルコード( アセンブリ言語など)に変換される過程で失われてしまう。リフレクションをサポートする場合、そのような情報は生成されるコードの中に メタデータとして保存される。

LISPForthなど実行時とコンパイル時の区別のない言語では、コードの解釈とリフレクションとの間に違いはない。

他の言語で