回覆列表
-
1 # 獅子座流星雨
-
2 # 程式設計師遇見更好的自己
泛型即根據傳入的引數不同返回不同的型別,比如返回給前端的是一個具體內容物件,我們就可以定義為泛型即具體內容可以傳入不同的物件。
泛型的定義可以把某一相似的屬性來接收不同的值。
-
3 # 熙爸愛釣魚
java裡的泛型是奇葩的存在。這也是我經常懟java的一個原因。
先說下泛型的主要作用:
1,強化型別安全,比如定義了一個List<String>,那麼裡面只能存放String,不允許存放其他型別(派生自String的除外)。型別安全應該在編譯和執行時都能體現。
2,提高效能,減少型別轉換和裝箱拆箱次數。
再說下java泛型奇葩之處:
1,java泛型實現的原理叫型別擦除,不管程式碼中怎麼定義泛型,編譯後都變成object, 因此不能實現執行時的型別安全。 而且java編譯器不夠聰明,可以很容易騙過去。 舉個例子,你呼叫了第三方的介面返回List<String>,但實際拿到的值裡面可能跟String沒有半毛錢關係。
2,既然型別被擦除,那麼型別轉換就不可避免了,因此使用泛型和非泛型在效能上沒有任何變化。
人吃任何東西的過程都一樣,只是可吃的東西各種各樣:把東西放進嘴裡,在嘴裡把東西用牙齒嚼碎,舌頭和唾液攪拌下嚥下去。有了泛型就可以用帶了表示東西的這個泛型引數的人表達這個場景。這個泛型引數是水果,就是人吃水果。這個泛型引數是飯,就是人吃飯。這個泛型引數是菜,就是人吃菜。好處就是同一個人就可複用吃。