ParaNamer
thoughtworksのParanamerはJavaのメソッド(コンストラクタ)のパラメタ名を取得するためのライブラリィ。
リフレクションでメソッド(コンストラクタ)パラメタの個数と型は取得できるものの、パラメタの名前は取得できない(ランタイムの情報に保持されていない)という、Javaの非常に残念な仕様を補完するために存在する。
ランタイムに存在していいないパラメタ名の情報をどのように取得するかは、Paranamerの実装クラスによって選択できる(合わせて使うこともできる)。
- AnnotationParanamer
JSR 330のNamedアノテーションを利用してパラメタ名を取得する
- BytecodeReadingParanamer
デバッグモードでコンパイルされたバイトコードからパラメタ名を取得する。(コードを読んでいないが恐らくはローカル変数情報からだろう)
- DefaultParanamer
何らかの手段(ソースコード書き換え、ポストプロセシング等)でフィールドに埋め込んだ情報からパラメタ名を取得する
後発ということもあるが、.NET Frameworkの場合メソッドのメタデータにパラメタ名のプロパティがあるため、何の苦労もいらない。