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 简易封装网络请求框架

泛型在现代编程语言中得到了广泛的支持和应用,它们为开发者提供了一种强大的工具,以创建更加灵活和可重用的代码。

posted @ 2024-04-25 22:41  西北野狼  阅读(166)  评论(0编辑  收藏  举报