Reflection
リフレクションは実行時に型情報を検査・操作する。クラス名、フィールド、メソッド、アノテーションを扱い、メソッドを動的に呼び出し、インスタンスを生成する。
目的
実行時の型イントロスペクションと動的操作を可能にし、フレームワークやシリアライズを支える。
メカニズム
リフレクション API で Class オブジェクトを取得し、フィールド・メソッド・アノテーションを列挙し、メソッドを動的に呼び出し、インスタンスを構築してフィールドへアクセスする。Java や C# のリフレクションは強力だが、性能上のオーバーヘッドがある。Go はインタフェースの型アサーションを用いる。
ユースケース
- フレームワークの実装
- シリアライズ
- 依存性の注入(DI)