LoginSignup
0
4

More than 5 years have passed since last update.

リフレクションを利用してmainメソッドを呼び出したい

Posted at

たとえばコマンドラインツールを開発していると、mainメソッドをテストしたりデバッグしたりしたいということがあります。そのような場合リフレクションを使うと便利ですが、どのようにすればmainメソッドをリフレクションから実行できるでしょうか? その結論が以下のサンプルです。

try {
    Method mainMethod = Sample.class.getMethod("main", String[].class);
    String[] args = {"arg1", "arg2", "arg3"};
    mainMethod.invoke(null, (Object) args);
} catch (NoSuchMethodException 
            | SecurityException 
            | IllegalAccessException
            | IllegalArgumentException
            | InvocationTargetException e) {
    e.printStackTrace();
    throw new RuntimeException(e);
}

ポイントとしてはinvokeでしょうか。第1引数にnullを与えて、以降の可変長引数部分はObjectにキャストしたargsを指定する。この2点を守って楽しくリフレクションしましょう(´・ω・`)

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4