staticメソッドのリフレクション
後輩から質問されたのでアップしときます。確かに一瞬どうやるんだ!?ってなるかも。
まず対象のクラス。
public class Target { public String aaa() { return "instance method"; } public static String bbb() { return "static method"; } }
staticメソッドの実行の前に一応インスタンスメソッドの実行の復習
Target target = new Target(); Method method = target.getClass().getMethod("aaa"); String result = (String)method.invoke(target); // instance method
staticメソッドの実行
Method method = Target.class.getMethod("bbb"); String result = (String)method.invoke(null); // static method
invokeの第一引数をnullとするところがポイント。staticメソッドはインスタンス不要やからね。