我不知道「強類型」和「類型安全」之間究竟有什麼區別!Arraylist是類型安全還是強類型?
請您用簡單的語言說明一下嗎?
假設我們使用ArrayList的,但我無法斷定它是類型安全或強類型。或者我們可以將它用作兩者。?
我不知道「強類型」和「類型安全」之間究竟有什麼區別!Arraylist是類型安全還是強類型?
請您用簡單的語言說明一下嗎?
假設我們使用ArrayList的,但我無法斷定它是類型安全或強類型。或者我們可以將它用作兩者。?
ArrayList
不是類型安全的。這意味着是ArrayList
可分配任何類型的值:
ArrayList myList = new ArrayList();
myList.Add("this is a string");
myList.Add(19); //Notice that this is an int, but it doesn't throw an error!
這是一個問題,因爲當你去使用列表,你不知道這是在列表中的類型。發生錯誤的可能性非常高。
避免使用ArrayLists
!改爲使用通用列表,例如List<T>
類型安全的,強類型的裝載短語,使得它很難讓程序員處處牽制一個確切的定義。但至少有足夠的共識來說明ArrayLists在任何重要的方面都不是既不是。
不要使用的ArrayList!而是使用通用List<T>
集合。
你的意思是arraylist既不是TypeSafe也不是強類型 –
我的意思是它不會對存儲在集合中的項目執行任何操作。 –
但總之結論是一樣的。因爲沒有TypeSafe也沒有強類型 –
ArrayList
數據結構不是類型安全的,也不是強類型的。您無法保證ArrayList
中的對象類型,因此所有內容均以Object
的形式存儲,與ASP.NET中Session
緩存中的對象存儲方式類似。
最大的缺點使用ArrayList
是一個需要發生時,你想獲得訪問對象的實際列表鑄造。如果列表中的任何值不是您期望的類型,那麼您可能會獲得轉換異常,並且處理這些代碼只是非常糟糕。
使用盡可能仿製藥,與List<T>
是最接近的泛型類型的ArrayList
數據結構。
我不知道我理解你的問題。
「強/弱類型」是一種編程語言的質量。 Java是強類型的,這意味着它有嚴格的語法,並且它可以在編譯時在你的代碼中發現問題,然後錯誤使它運行時間。儘管(我不確定確切的答案),Java可能並不完全是類型安全的。它允許使用泛型,這意味着您可以創建一個字符串ArrayList(ArrayList<String>
),整數ArrayList(ArrayList<Integer>
),布爾ArrayList(ArrayList<Boolean>
)。 ArrayList<T>
表示您可以用<T>
替換任何對象。 ArrayList<? extends T>
意味着你可以使用任何A,B,C,土豆等,擴展T.
假設你有下面的類替代:
class Admin extends User {
//Stuff
}
class Student extends User {
//Stuff
}
class Teacher extends User {
//Stuff
}
你甚至可以擁有的任何兒童的ArrayList用戶對象,例如:ArrayList<User>
。 對於此列表,您可以添加學生,管理員和教師對象。
但是,如果您不指定此ArrayList包含的數據類型(例如:List l = new ArrayList();
),則可以將任何對象放在其中,使其不是類型安全的。
泛型濫用的一個例子can be seen on Wikipedia。
完美,但我認爲我的問題非常清楚。泛型是我們用於類型安全實現的方式,但是Arraylist在其基礎中,既不是類型安全的,也不是強類型。這是真的嗎? –
請注意,「強類型」通常適用於編程語言,而「類型安全」可能來自「類型安全集合」短語... –