泛型(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 簡易封裝網絡請求框架
泛型在現代編程語言中得到了廣泛的支持和應用,它們爲開發者提供了一種強大的工具,以創建更加靈活和可重用的代碼。