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メソッドはインスタンス不要やからね。