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
LazyForEach(new CommonDataSource<ProductDataModel>(productData), (item: ProductDataModel) => { ListItem() { // ... } });
-
页面2
LazyForEach(new CommonDataSource<Commodity>(this.commodityList), (item: Commodity) => { ListItem() { // ... } });
网络请求中的泛型应用
网络请求的入参和返回值的类型判断也会用到泛型,以确保类型安全和提高代码的可读性。
使用示例见:HarmonyOS 简易封装网络请求框架
泛型在现代编程语言中得到了广泛的支持和应用,它们为开发者提供了一种强大的工具,以创建更加灵活和可重用的代码。