泛型(Generics)概述
泛型是一種程式語言特性,它支援型別引數化,使得定義的類、介面和方法可以適用於多種型別,而不僅僅是固定的一種型別。
理解泛型
泛型允許在定義介面時,讓引數的型別更加靈活,從而使得功能更加強大。簡而言之,泛型提供了一種方式,讓程式碼能夠適應不同的資料型別,而不需要為每種資料型別編寫重複的程式碼。
專案中使用泛型的例子
在專案中,泛型被用於實現資料來源介面 IDataSource
,以支援不同型別的資料實體物件陣列。這裡有一個通用的資料來源類 CommonDataSource
,它實現了 IDataSource
介面,並使用泛型 T
來表示可以是任何型別的資料實體。
export class CommonDataSource<T> implements IDataSource {
private dataArray: T[] = [];
private listeners: DataChangeListener[] = [];
constructor(element: T[]) {
this.dataArray = element;
}
public getData(index: number): T {
return this.dataArray[index];
}
public totalCount(): number {
return this.dataArray.length;
}
public addData(index: number, data: T[]): void {
this.dataArray = this.dataArray.concat(data);
this.notifyDataAdd(index);
}
public pushData(data: T): void {
this.dataArray.push(data);
this.notifyDataAdd(this.dataArray.length - 1);
}
// 其他方法...
}
使用場景
-
頁面1
LazyForEach(new CommonDataSource<ProductDataModel>(productData), (item: ProductDataModel) => { ListItem() { // ... } });
-
頁面2
LazyForEach(new CommonDataSource<Commodity>(this.commodityList), (item: Commodity) => { ListItem() { // ... } });
網路請求中的泛型應用
網路請求的入參和返回值的型別判斷也會用到泛型,以確保型別安全和提高程式碼的可讀性。
使用示例見:HarmonyOS 簡易封裝網路請求框架
泛型在現代程式語言中得到了廣泛的支援和應用,它們為開發者提供了一種強大的工具,以建立更加靈活和可重用的程式碼。