“另一個很酷的話題。”
“驚喜不斷!今天是我的生日嗎?”
“今天,我將向您介紹泛型。泛型是具有參數的類型。在 Java 中,容器類讓您指示其內部對象的類型。”
“當我們聲明一個通用變量時,我們指明了兩種類型而不是一種:變量類型和它存儲的數據類型。”
“ArrayList 是一個很好的例子。當我們創建一個新的 ArrayList 對象時,指明將存儲在該列表中的值的類型很方便。”
代碼 | 解釋 |
---|---|
|
創建一個名為 的 ArrayList 變量list 。為其分配一個 ArrayList 對象。 這個列表只能存儲String對象。 |
|
創建一個名為 的 ArrayList 變量list 。為其分配一個 ArrayList 對象。這個列表可以存儲任何值。 |
|
創建一個名為 的 ArrayList 變量list 。為其分配一個 ArrayList 對象。 這個列表只能存儲 Integer 和int 值。 |
“聽起來超級有趣。尤其是關於存儲任何類型的值的部分。”
“這似乎只是一件好事。實際上,如果我們在一種方法中將字符串放入 ArrayList,然後期望它在另一種方法中包含數字,程序就會崩潰(因錯誤而終止)。”
“我懂了。”
“現在,我們不會創建自己的帶有類型參數的類。我們只會使用現有的類。”
“任何類都可以是類型參數,即使是我寫的嗎?”
“是的。除了基本類型之外的任何類型。所有類型參數都必須從 Object 類繼承。”
“你是說我不會寫 ArrayList<int>? ”
“事實上,你不能。但是 Java 開發人員已經為每個基本類型編寫了包裝類。這些類繼承了Object。它看起來是這樣的:”
原始類型 | 班級 | 列表 |
---|---|---|
整數 | 整數 | ArrayList<整數> |
雙倍的 | 雙倍的 | ArrayList<雙精度> |
布爾值 | 布爾值 | ArrayList<布爾值> |
字符 | 特點 | ArrayList<字符> |
字節 | 字節 | ArrayList<字節> |
“您可以輕鬆地將原始類及其類似物(包裝類)分配給彼此:”
例子 |
---|
|
|
|
|
|
“太好了。我想我會嘗試更頻繁地使用 ArrayList。”
GO TO FULL VERSION