抽象メソッドの引数名

例えばライブラリをつくってjarにして配布した場合、Eclipse等のIDE上でinterface型オブジェクトのメソッド補完するときに引数の変数名がjava.lang.Stringなら「s」とかjava.lang.Objectなら「obj」とかになってしまうのをどうににかできないかなと少し調べたのですが。

通常、native または abstract メソッドではローカル変数情報は使用できない (つまり、引数名情報は使用できない)

http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/jpda/jdi/com/sun/jdi/Method.html#variables%28%29

上記のJavadocにさらっと触れている通り、Javaの抽象メソッドの引数情報はclassファイルになった段階では、型のみになっているようです。

確かにバイナリエディタでそれとなくclassファイルを見てみても、classの場合は引数の変数名も見えてるけど、interfaceやabstract classの抽象メソッドの場合、型しか持ってないようにみえます。


Javaとしては「どうしても引数に意味を持たせたいケースであれば、そうと分かる型を用意するべき」という思想なのかなという気はします。

ただ、使う側からすると、Stringでいいところをわざわざ独自クラスでnewしたり、キャストしないといけなくなったりするのが果たして便利なのかとか考えると悩ましい感じです。


「あんまり横着せず少しはJavadoc嫁」でもいいんでしょうけど。