一. 泛型函式
1.單一佔位符泛型函式
下面就使用乙個經典案例:兩個數值進行交換。來使用泛型,寫乙個通用的函式,這個函式的功能就是交換兩個變數的值。在swift中不允許型別隱式轉換,也就是說,如果你定義的該函式是交換兩個整數的,那麼如果你想使用他來交換浮點型別的資料,那麼對不起,是不允許這樣做的。為了寫個通用的函式,那接下來就是泛型出場的時候了。
下面就是使用泛型來定義乙個交換兩個變數的值的函式,該函式如下圖所示。其中mycustometype就是在函式中定義的泛型佔位符,改佔位符表示傳入的引數是什麼型別,那麼mycustometype就是什麼型別。這樣一來,使用泛型定義的該函式就是通用的了。在該函式中只用到了乙個mycustometype,也就是下方的函式還是有一定約束性,就是number1和number2的型別都是相同資料型別的,這種情況也是單一佔位符泛型函式。
呼叫上述函式來交換兩個字串型別的值:
同樣的函式,你還可以使用它來交換兩個整數,浮點數等等其他資料型別,下方就是交換的兩個整型的資料,也是沒有問題的。
2.多個佔位符的泛型函式
這個是在上述函式中進行的擴充,泛型佔位符允許是乙個列表的形式出現的,也就是允許有多個不同的泛型佔位符來代表不同的資料型別。也許說起來有些拗口,接下來就來個例項在函式中使用多個泛型佔位符。具體例項如下所示。本質上允許在泛型佔位符中新增多個泛型型別變數。下方的函式兩個引數的資料型別允許不同,因為其引數使用的是不同的泛型佔位符,所以其型別允許是不同的。具體使用方式如下所示。
二.泛型類
泛型類,顧名思義,就是在類中使用泛型。在類中使用泛型,其實和函式中使用泛型是一樣的。就是在宣告類的時候,使用泛型佔位符表示乙個要處理的泛型即可。下方就是乙個泛型類,其中有個泛型型別陣列,還有乙個列印該陣列的方法,如下所示:
上面是泛型類的定義,緊接著就是泛型類的使用了,下方是建立乙個泛型類的例項,然後呼叫相應的方法,具體如下所示。
上面是泛型類的定義與使用,泛型還可以應用於結構體,協議,延展等,其使用方法和泛型類是差不多的,要學會舉一反三。在本篇部落格中就不對泛型結構體,泛型協議,泛型延展,以及泛型的約束做過多的贅述了。
泛型 泛型類 泛型方法 泛型擦除
1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...
泛型 (2)泛型類 泛型方法 泛型介面
一 泛型類 定義person類 package cn.itcast.p2.bean public class person implements comparable public person string name,int age public int compareto person p ov...
泛型 泛型介面
泛型介面 介面上要宣告泛型,介面的抽象方法要接這個泛型。實現類的宣告也要寫具體的泛型實參。注意 泛型實參要用引用資料型別。基本資料型別不行。如果一定要使用基本資料型別那麼得使用基本資料型別的包裝類。如果實現類中的型別不確定,也想帶泛型,並且和介面中的一致。那麼在實現類中宣告,將在此處宣告的 類的泛型...