ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

Javaのリフレクション

Javaは言語としてリフレクションをサポートしている。他にもPerlとかRubyとかも。(Cはサポートしているんだっけか?)
コードはとても簡単。

// リフレクションなし
Foo foo = new Foo();  //インスタンス
foo.hello();          //メソッド呼び出し

// リフレクション
Class clazz = Class.forName("Foo");
Method method = clazz.getMethod("hello", null);   //メソッドを抽出
method.invoke(clazz.newInstance(), null);         //インスタンス + メソッド呼び出し

こんな感じ。リフレクションの2行目はメソッドを抽出している。
フレームワークでは、このリフレクションが多用されている。