首页 > 其他分享 >HarmonyOS 项目中泛型的使用

HarmonyOS 项目中泛型的使用

时间:2024-04-25 22:44:20浏览次数:27  
标签:index 项目 CommonDataSource HarmonyOS 中泛 泛型 data public dataArray

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

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

标签:index,项目,CommonDataSource,HarmonyOS,中泛,泛型,data,public,dataArray
From: https://www.cnblogs.com/androidsuperman/p/18158810

相关文章

  • HarmonyOS 应用生命周期有哪些? 按返回键会调用哪些生命周期?
    UIAbility生命周期:onCreate:页面初始化,变量定义,资源加载。onWindowStageCreate:设置UI界面加载、设置WindowStage的事件订阅。onForeground:切换至前台,申请系统需要的资源,或者重新申请在onBackground()中释放的资源。onBackground:切换至后台,释放UI界面不可见时无用的资......
  • HarmonyOS 中 Context 相关的内容及其区别
    以下是不同Context类型及其特点的概述:ApplicationContext应用级别Context:ApplicationContext是应用级别的上下文环境。生命周期管理:提供了订阅应用内Ability生命周期变化的能力。系统资源监控:可以订阅系统内存变化和应用内系统环境的变化。适用场景:在UIAbility、Exte......
  • 图文结合手把手教你创建SpringCloud项目
    前言什么是SpringCloud?SpringCloud是一系列框架的有序集合,它利用SpringBoot的开发便利性简化了分布式系统的开发,比如服务注册、服务发现、网关、路由、链路追踪等。SpringCloud并不是重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成......
  • IDEA中springboot项目编译两次的问题
    原因:因为在导入项目的之后,项目无法运行,问题1:显示缺少org.springbootframe的依赖,不知道怎么解决,网上搜了个方法,就是勾选下图的选项,意思是把build操作由IDEA交给Maven,勾选之后确实可以启动项目了但是后面在执行Mybatis时,问题2:我发现无论如何都会报一个唯一键值重复的错误,思考原因......
  • 【vue-入门】-【1】Vue介绍与项目结构
    Vue是什么?渐进式javaScript框架,易学易用,性能出色,适用场景丰富的web框架官方文档地址:https://cn.vuejs.orgVue简介是渐进式javascript框架,易学易用,性能出色,适用场景丰富的web前端框架Vue是一款用于构建用户节点的javascript框架。它基于标准html、css、javascript构建并提......
  • 鸿蒙HarmonyOS实战-ArkUI事件(触屏事件)
    ......
  • Visual Studio 项目发布时将资源目录文件夹所有文件拷贝到发布路径
    1.背景在.NET项目开发过程中,时常需要将资源文件夹复制到生成目录,以确保这些资源随项目输出。2.方法找到当前项目例如:xxxxx.Api 双击进入,对 .csproj文件内容,加入如下信息:<TargetName="CopyResourcesPublish"AfterTargets="Publish"><ItemGroup><Resource......
  • 日志服务 HarmonyOS NEXT 日志采集最佳实践
    背景信息随着数字化新时代的全面展开以及5G与物联网(IoT)技术的迅速普及,操作系统正面临前所未有的变革需求。在这个背景下,华为公司自主研发的鸿蒙操作系统(HarmonyOS)应运而生,旨在满足万物互联时代的多元化设备接入、高效协同和安全可靠运行的需求。HarmonyOS不仅着眼于智能手机......
  • 创建Android Studio项目
    如果想在其他模拟器(如雷电上打开项目,需要提前模拟器) 下载好AndroidStudio后,打开选择newproject 选择自己想用的模板 输入基本信息:项目名称,包命名,版本等 点击finish  加载完成后结束......
  • java多模块项目依赖问题
    eg:b项目依赖a项目 a项目中的pom文件 注意全是自定义的<groupId>:通常表示项目所属的组织或公司的反向域名。这是为了保证全球唯一性<artifactId>:是项目的名称。这通常是项目的简单名称,它应该清晰地描述项目的内容。<version>:是项目的版本号。 b项目中的pom文件 ......