出現原因:泛型是在jdk1.5新增的技術,其是為解決**通用性而出現的。
例如:假設我現在要處理int、string兩個型別的資料,其處理的邏輯是一模一樣,即除了型別不同,其他完全一樣。
簡單的做法即:分別寫出int對應的處理**,string 對應的處理**,但是這個解決方案很蠢,那有沒有更好的解決方案呢?
使用object宣告型別,因為object是所有類的父類,因此可以接受所有的型別;使用該方法確實能解決上述的問題,但是帶來的問題是型別不安全的問題:假設我們現在有乙個方法function(lista),這裡的a,我們希望是int型別,float型別,但是它同樣可以接受string型別,因此會出現型別不安全的問題。那如何解決呢,這就是泛型出現的原因。
使用泛型解決:list,先指定t的型別,指定為int,則後面的所有資料都為int型,指定為float,則都為float型別,則不會出現我們沒出現的型別,達到型別安全。另外,指定型別以後不需要強制轉換,效能更高
相比object實現,泛型有兩大優勢:型別安全、不需要強制轉換。
為什麼使用泛型
泛型 當我們將乙個物件放入集合,集合不會記住此物件的型別,當再次取出時,該物件的變異型別為object,但其執行時型別仍然為其本身型別。強制轉換很容易出現classcastexception異常 listarraylist new arraylist 把引數string型別當成引數傳入容器,指定容器...
泛型 為什麼是泛型?
需求 先需編寫乙個程式,用棧 stack 進行進棧和出棧操作,並對棧中的元素進行運算。方案一 假設元素為int型別,則可使用 code class stack public void push int x public int pop 客戶 code class test 然而,現在需求發生變化。客...
為什麼要使用blog
有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...