概要
Javaのクラス情報(java.lang.Class
)に含まれるメソッド情報(java.lang.reflect.Method
)からは、メソッドで定義した引数の名前が取得できます。
今回はその引数名の取得方法を紹介します。
条件など
-
こちらのStackOverflowの記事にある通り、Java8以降が前提となります。Java8以降ではMethodからParameterクラスが取得可能なので、Parameterクラスの
getName()
を使用することで引数名が取得できます。 - Javaのコンパイルオプションで、classファイルにパラメータ情報を含める必要があります。この設定を行わないと引数名を取得してもarg0、arg1のような形になります。コンパイルオプションにどういう指定をすれば良いか、リフレクションで引数名を取得するときはjavacに-parametersオプションをつけるにて紹介されています。なお、Intellijでの設定方法はこちらのStackOverflowの記事を参照ください。
実装サンプル
大した内容ではないのですが、MethodクラスからParameterを取得し、それを出力する実装サンプルものせておきます。
public static void outputMethodParamName(Method m) {
Arrays.stream(m.getParameters()).forEach(p -> {
System.out.println(p.getName());
});
}