日々常々

ふつうのプログラマがあたりまえにしたいこと。

Java8で実行時にメソッドの引数の名前がとれるぽい

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 とかになります。いつもの後方互換云々。

f:id:irof:20210708003126p:plain
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

インストーラーじゃないので、展開して直接 bin に入ってる javac/java を使えば試せます。おてがる。


追記: javapた

しといた。

Constant pool に MethodParameters てのが増えてる。で、メソッドの中にも MethodParameters: がでてる。