2016-07-15 38 views
-4

我知道匿名類是什麼時候你有任何類或接口,只有你的代碼需要實現或重寫某些類或接口匿名,它增加了程序的可讀性。但我有點困惑,假設將來你需要爲不同的類實現相同的接口,那麼在這種情況下,你必須重構你以前的類,那麼是否還有其他的匿名類advanrage?(它是否提高了性能?)java中的匿名類的用例和優點是什麼?

+4

請參考http://stackoverflow.com/questions/355167/how-are-anonymous-inner-classes-used-in-java – Unknown

+0

如何使用和優點都是不同的事情,我alsilo問如何提高性能。 –

+1

@Faizan http://stackoverflow.com/questions/3028341/java-anonymous-class-efficiency-implications –

回答

2

這是什麼意思?

一個匿名類正是它的名字所實現的 - 它沒有名字。它將declaration課程與創建該課程的instance一體化。 由於匿名類沒有名稱,因此無法從定義匿名類的類外部實例化對象。事實上,匿名對象只能在定義它的相同範圍內實例化。

爲什麼要使用匿名類?

匿名類可以節省時間並減少數量。 java定義應用程序所需的文件。您可能有一門課程僅在特定情況下使用,例如Comparator。這允許「即時」創建對象。

你可能會發現你更喜歡使用匿名類;很多人在​​上廣泛使用listeners

的語法的匿名類定義

該實施例展示一個匿名類定義爲傳遞給在類別類的sort()方法的比較器。假定aList是要排序的有效數據列表。

Collections.sort (aList, 
    new Comparator() { // implements the IF 
     public int compare (ObjectType o1, ObjectType o2) throws ..{ 
      //.... implementation for compare() 
     } // end of compare() 
    } // end of Comparator implementation 
); // closed paren for sort() and end of statement semicolon 

規則:

匿名類必須擴展超類或實現一個接口,但它不能有一個明確的擴展或實現子句。

匿名類必須實現超類或接口中的所有抽象方法。

一個匿名類總是使用超類的默認構造函數來創建一個實例。

+0

至少有一部分是從其他來源逐字複製的。見例如http://androidhello.com/androidEbooks/Android-Java.php?Ebooks-Android=2649 - 請在信貸到期時給予貸款。 –