HarmonyOS 項目中泛型的使用

泛型(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. 頁面1

    LazyForEach(new CommonDataSource<ProductDataModel>(productData), (item: ProductDataModel) => {
      ListItem() {
        // ...
      }
    });
    
  2. 頁面2

    LazyForEach(new CommonDataSource<Commodity>(this.commodityList), (item: Commodity) => {
      ListItem() {
        // ...
      }
    });
    

網絡請求中的泛型應用

網絡請求的入參和返回值的類型判斷也會用到泛型,以確保類型安全和提高代碼的可讀性。
使用示例見:HarmonyOS 簡易封裝網絡請求框架

泛型在現代編程語言中得到了廣泛的支持和應用,它們爲開發者提供了一種強大的工具,以創建更加靈活和可重用的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章