前回は、インスタンスメソッドをリフレクションで実行してみました。
今回は、staticメソッドをリフレクションで実行してみます。
前回とソースが酷似していますが、けして手抜きではないですよ。ええ。きっとw
staticメソッドを実行するサンプル
文字列を引数で受け、標準出力を行うstaticメソッドをリフレクションで実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.lang.reflect.Method; public class RefMethodTest { public static void main(String[] args) { try { RefMethodTest obj = new RefMethodTest(); Class<? extends Object> clazz = RefMethodTest.class; Method method = clazz.getDeclaredMethod("println",String.class); method.invoke(null, "出力してね"); method.invoke(null, "もういっかい"); }catch(Exception e) { e.printStackTrace(); } } public static void println(String str) { System.out.println(str); } } |
実行結果
1 2 | 出力してね もういっかい |
サンプルの解説
前回のソースと見比べると分かり易いです・・。
Method#invoke(Object,Object…)にて、前回同様にメソッドを実行しています。
ただし、この呼び出しの際に、インスタンスを渡さず、代わりにnullを渡すことで、staticメソッドを実行することができます。
インスタンスメソッドを実行するには・・・?
インスタンスメソッドを実行する方法は、こちらを見てください。