interface Int {
public void show();
}
public class Test {
public static void main(String[] args) {
Int t1 = new Int() {
public void show() {
System.out.println("message");
}
};
t1.show();
}
}
9
A
回答
16
您正在定義一個實現接口Int
的匿名類,並立即創建一個類型爲thatAnonymousClassYouJustMade
的對象。
4
匿名內部類的這種特殊語法在底層做了什麼:創建一個名爲Test$1
的類。您可以在Test類旁邊的類文件夾中找到該類文件,並且如果您打印了t1.getClass().getName()
,則可以看到該文件。
7
這種表示法的簡寫
Int t1 = new MyIntClass();
// Plus this class declaration added to class Test
private static class MyIntClass implements Int
public void show() {
System.out.println("message");
}
}
那麼,到底你要創建一個具體的類,其行爲已定義內嵌的一個實例。
你也可以用抽象類來做到這一點,通過提供所有內聯抽象方法的實現。
0
我覺得你的對象與界面無關。如果你註釋掉整個界面,你仍然會得到相同的輸出。它只是創建了一個匿名類。我認爲,除非你使用類「實現」你不能實現接口。但我不知道如何命名碰撞不會發生在你的情況。
+0
匿名類明確實現了接口,並且't1 instanceof Int'將成立。 – Thilo 2010-10-17 01:37:54
相關問題
- 1. 當Path是一個接口時創建一個路徑對象?
- 2. Android視圖。 onClickListener是一個接口。 JAVA如何允許創建它的對象?
- 3. 這似乎是一個Javascript事件的類。它是什麼?
- 4. 如果一個工廠總是創建一個新的對象
- 5. 這個prettyDate函數是如何工作的?似乎它有多個返回值
- 6. 創建一個頁面轉換,它變成白色,但這似乎不工作
- 7. 如果OnItemClickListener是Android中的一個接口,我們如何基於它創建一個對象?
- 8. 從對象,它是一個對象
- 9. 從另一個對象的基礎接口創建一個新對象c#
- 10. 爲每個域對象創建一個接口是一個好主意嗎?
- 11. 的innerHTML似乎是這個
- 12. 創建從一個類的對象這是繼承紅寶石
- 13. 的UIView似乎被鎖定 - 這是一個奇怪的一個
- 14. 刪除一個對象Django-代碼似乎是正確的,但不工作?
- 15. 這是如何創建一個proc對象?
- 16. 打印的對象是一個數組,它是一個對象
- 17. 這個JavaScript對象是如何爲這個書籤創建的?
- 18. 創建新的python對象似乎是相同的對象
- 19. 如何訪問這個,這是一個對象字面還是?
- 20. JPanel或JLabel似乎是爲每個對象創建兩個標籤而不是一個標籤?
- 21. 如何創建一個給定接口的對象?
- 22. 如何創建一個對象集合的接口?
- 23. 這是一個對象嗎?
- 24. 從創建一個對象
- 25. 我應該每次創建一個新對象還是創建一個對象?
- 26. XSocket.net。如何從一個對象,它是不是一個控制器
- 27. 的TextView onClcikclistener似乎不是這個TextView的工作
- 28. 選擇一個對象,它是在對象的列表,這也是在對象
- 29. 創建bean時出錯,因爲它是一個接口?
- 30. 接口,這也是一個顯示對象
這對於事件處理程序(如使用ActionListener接口的那些處理程序)非常有用。 – 2010-10-16 04:49:04