ある人のAndroidのソース見てたら 「クラス名.this」がいっぱいあって焦った。こんなの動くのかと思って実験してみた。
public class Test{ public Test(){ } public void show(){ System.out.println( Test.this ) } public String toString(){ return "this is a test"; } public static void main(String args[]){ Test a = new Test(); a.show(); } }
クラス名.this
public class Test{ ///(略 System.out.println( Test.this ) ///(略 }
なるほど、キモい。
うごかしてみた
takuya@air:~/Desktop$ javac Test.java takuya@air:~/Desktop$ java Test this is a test
普通に動くのね。
スタティックthis の参照先が、コンテキストに依って切り替わるんだろ、と考えたら違和感はないねー。
匿名クラス、コールバック関数がバンバン登場するときに便利そうっていう感想を言ったら、「Androidがすでにそうなっとる」と言われた。なるほどねー無知ですいません