Java 8からこういう書き方が出来るようになっていたようです。(初めて知った)
public class Main { public String getString(Main this) { // thisで自分自身が引数になっている return this.toString(); } public static void main(String[] args) { Main main = new Main(); System.out.println(main.getString()); //呼び出すときは何も書かなくてもよい } }
何がうれしいかというと、自分自身を呼び出すときにアノテーションがつけれるようになる。(そして処理が出来るようになる)
なんか、おおっ!という感じ。
呼び出すときに何も書かなくてよいというのがものすごくJavaっぽくないので驚きました。
http://blog.joda.org/2015/12/explicit-receiver-parameters.html
なお、これを使うとPMD5.4.1より前は死ぬ。
https://sourceforge.net/p/pmd/bugs/1455/
2016/06/15(追記)
コメントで何に使うのかさっぱりわからんという意見が多発していますが、それに対する回答としては
という感じで、Type Annotationを使用する場合に使用することがある。基本的には使用するケースはない。
となります。
ということで、基本的にあまりうれしくないという結論に。
便利(なのかもしれない)と思ってしまった人は勉強が足りないぞっ☆彡