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. 創建一個頁面轉換,它變成白色,但這似乎不工作
- 6. 從對象,它是一個對象
- 7. 爲每個域對象創建一個接口是一個好主意嗎?
- 8. 創建從一個類的對象這是繼承紅寶石
- 9. 這是如何創建一個proc對象?
- 10. 打印的對象是一個數組,它是一個對象
- 11. 這個JavaScript對象是如何爲這個書籤創建的?
- 12. 如何訪問這個,這是一個對象字面還是?
- 13. 如何創建一個對象集合的接口?
- 14. JPanel或JLabel似乎是爲每個對象創建兩個標籤而不是一個標籤?
- 15. 我應該每次創建一個新對象還是創建一個對象?
- 16. 的TextView onClcikclistener似乎不是這個TextView的工作
- 17. 選擇一個對象,它是在對象的列表,這也是在對象
- 18. 創建bean時出錯,因爲它是一個接口?
- 19. 接口,這也是一個顯示對象
- 20. 如何爲一個Java類創建兩個接口,一個是隻讀的,一個是可讀寫的?
- 21. 爲什麼一個對話似乎有它的一個線程?
- 22. 如何從一個不同的範圍創建一個對象
- 23. 從另一個對象創建對象
- 24. 測試一個對象是否實現了一個接口
- 25. object.function()如何等於另一個對象?它是如何工作的?
- 26. 從軌道中的另一個對象創建一個對象
- 27. 如何確定一個對象是實現一個共同的接口
- 28. 創建一個對象,其中的值是一個數組
- 29. 如何創建一個對象,如果它有多個belongs_to?
- 30. 它是一個抽象類還是純虛擬(接口)?
這對於事件處理程序(如使用ActionListener接口的那些處理程序)非常有用。 – 2010-10-16 04:49:04