1
2
3
4
|
Runnable rn = new Runnable() { public void run() { } }; |
相當於:
1
2
3
4
5
|
class Anomymous implements Runnable { public void run() { } } Runnable rn = new Anomymous(); |
可以看到前者更簡潔。(注意前者最後的分號不能省略,編譯器把整個看作一條語句)
不過,匿名內部類僅限於只實例化一次的內部類,如果內部類需要多次實例化,通常用後者。
另外,匿名內部類要麼繼承一個父類,要麼實現一個接口,不能兩者兼有,實現接口時也不能實現多個接口。關於該問題可以參考這貼:
http://topic.csdn.net/u/20071022/21/4f3097b7-e721-4313-8dc1-c11db3952eb5.html