- JEP 118: Access to Parameter Names at Runtime
- http://download.java.net/jdk8/docs/api/java/lang/reflect/Parameter.html#getName()
Java8で実行時に Parameter#getName でメソッドの引数の名前がとれる感じです。
やってみる
こんなクラスのー
public class Hoge { public void method1(String hoge) { } public void method2(Object fuga, Object piyo) { } }
メソッド名と引数を引っ張り出すと、こう出る。
method1[ java.lang.String hoge] method2[ java.lang.Object fuga, java.lang.Object piyo]
実際にやったコードはGistで → https://gist.github.com/irof/5124396
javac に -parameters オプションを付けなきゃ arg0 とかになります。いつもの後方互換云々。
https://twitter.com/irof/status/310404150406045696
……なんかヤなので書いた!
蛇足: JDK8
JDK8を試したいけどどれダウンロードすりゃいいねんって方向け
JDK〓 8 Early Access Releases とか Java〓 Platform, Standard Edition 8 Early Access with Lambda Support とかあります。なんとなくexeやdmgのの方が良い気がするかもしれませんが、それだと lambda さんが入っておりません。具体的には java.util.stream とかが無いので、おそらくJava8を試したい動機となる filter/map/forEach あたりが使えません。なのでzipでおk
追記: javapた
しといた。
Constant pool に MethodParameters てのが増えてる。で、メソッドの中にも MethodParameters: がでてる。