2012-02-20 55 views
1

我一直在面對如此多的問題,使用匿名類就像我不能執行instanceOf測試我既不能實現多個接口,所以有人請解釋我可以或不能用java中的匿名類來做什麼?在java中的匿名類的限制?

+1

「我能或不能用嵌套類做什麼」 - 並非所有*嵌套*類都是*匿名*。 – dasblinkenlight 2012-02-20 22:02:53

+0

除了列出的兩項外,匿名類不能有構造函數。 – dasblinkenlight 2012-02-20 22:06:03

+0

謝謝....我已經修改了我的問題 – Mike 2012-02-20 22:06:41

回答

2

匿名內部類的目的是擴展和實例化一個現有的類或實現一個單一的接口。

其侷限性可以從上面導出:

  • 只有一個非最終類可以擴展或一個接口實現。
  • 只能訪問封閉方法的最終局部變量。 (這是由於在調用內部類的任何方法時正常局部變量將超出範圍)
  • 您無法定義構造函數。 (類沒有名字。)

如果需要多個接口,可以使用局部內部類,它是像一個正常的內部類,有自己的名稱,但在方法中定義。我不得不承認,我從來沒有見過它在實踐中使用過,我認爲沒有人願意這樣做,希望有人會拿出一個例子。

4

匿名類工作時

  • 你永遠需要參考類本身
  • 你只需要擴展一個類或實現一個接口

...但其他比沒有任何重大限制。這在很多情況下都可以正常工作:例如,在定義回調函數,偵聽器等時的很多情況。