首页 > 其他分享 >鸿蒙开发 四十 ArkTs 范型

鸿蒙开发 四十 ArkTs 范型

时间:2024-10-14 12:53:42浏览次数:9  
标签:范型 ArkTs 定义 鸿蒙 接口 类型 泛型 尖括号

1、范型函数

范型的目的就是为了代码的复用性更高、类型是可变的,类型是在使用的时候才定的,语法格式如下:function 函数名字<T> (param:T):T,返回T,这里就不管是什么类型,只管传递,一旦确定类型,三个地方的T都必须一至,下图:

这里封装了一个函数,参数是什么不知道,参数类型是什么不知道,函数名字后面有个<T>,这个可以是M,可以任何之母也可以是任何汉字,比如:

这里尖括号里面改成汉字也不影响范型函数的定义,这里改了参数里面的函数也得改,返回值类型也得改,下图红框三处的必须是一至的:

范型函数的调用,函数名+字尖括号,尖括号里面是具体类型,简括号里面是什么类型,实参数就传什么,如下图:打印出abc

当然,调用的时候尖括号和尖括号的类容不写也是可以的,会根据传的类型自动推断,例如:

2、范型约束

上面讲到的范型的时候,没有任何约束,想传什么就传什么的,这样有好处有坏处,好处是灵活,坏处也是太灵活,如果想要约束传的类型,鸿蒙中使用的是接口属性,例如:

上述泛型方法定义了参数必须是ILength的属性length,而这个参数的类型不用管,哪怕是string类型也行,原因是string类型有length属性,如下图,我传字符串abc没问题,但是我们传Person不行,因为Person没有length属性,

如果我们在Person类里面添加个length属性,顺利通过。

3、多个范型的约束

多个范型约束的只需要在单个范型的基础上多添加范型和约束就行,如下图:

这里的类型1和类型2是对应的关系,类型必须得相同

4、泛型接口

定义接口的时候,结合泛型来定义就是泛型接口了,如下图:

 紧接着,定义一个接口方法,传入什么就返回什么,紧接着定义一个方法,返回数组,下图:

实现这个接口,实现接口最主要的是实现接口大方法,下图:

假如实例化的时候传入string,需要修改如下:

5、泛型类

泛型累的定义只需要在类的后面加"<类型>"就是反省类,如下图:

定义了泛型类,类型没定,使用的时候想传什么类型就是什么类型,类型是通过构造函数传递的,对外提供了获得传入参数的方法,如下图:

总结:泛型是定义的时候不指定类型的,使用的时候在具体指定类型的灵活语法,有泛型方法、泛型接口、泛型类,泛型的约束是通过接口实现的,接口的属性是啥,之后的参数需要有相同的属性,多个泛型的顺讯需要一样

标签:范型,ArkTs,定义,鸿蒙,接口,类型,泛型,尖括号
From: https://blog.csdn.net/renfujiang/article/details/142902973

相关文章

  • 鸿蒙--商品列表
    这里主要利用的是List组件相关概念Scroll:可滚动的容器组件,当子组件的布局尺寸超过父组件的视口时,内容可以滚动。List:列表包......
  • 瑞芯微RK3566/RK3568 Android11使用OTA升级固件方法,深圳触觉智能鸿蒙开发板演示,备战第
    本文介绍瑞芯微RK3562/RK3568在Android11系统OTA(U盘/TF卡)升级固件方法,使用的是触觉智能的PurplePiOH鸿蒙开源主板,搭载了瑞芯微RK3566芯片,类树莓派设计,是Laval官方社区主荐的一款鸿蒙开发主板。1、OTA包生成在源码根目录上执行以下命令编译OTA包makeinstallclean#make-j4#......
  • 鸿蒙初学002-应用程序包基础知识
    应用与应用程序包用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。一个应用所对应的软件包文件,称为“应用程序包”。当前系统提供了应用程序包开发、安装、查询、更新、卸载的管理机制,便于开发者开发和管理应用。同时,系统还屏蔽了不同的芯片平......
  • 鸿蒙发送消息通知
    注意:发送消息通知要开启设置中的消息通知importnotifyfrom'@ohos.notificationManager'importimagefrom'@ohos.multimedia.image'import{BusinessError}from'@kit.BasicServicesKit'@Entry@ComponentstructNotificationPage{//全局任务id......
  • 鸿蒙数据持久化sqlite
    1.数据查询model:entry/src/main/model/TaskModel.etsimportrelationalStorefrom'@ohos.data.relationalStore';import{common}from'@kit.AbilityKit';importTaskInfofrom'../ets/viewModel/TaskInfo';classTaskModel{priv......
  • 鸿蒙初学001-构建第一个ArkTS应用(Stage模型)
    https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5HarmonyOSSDK介绍:从HarmonyOSNEXTDeveloperPreview1(API11)版本开始,HarmonyOSSDK以Kit维度提供丰富、完备的开放能力,涵盖应用框架、系统、媒体、图形、应用服务、AI六大领域,例如......
  • 鸿蒙首选项数据持久化
    1.ets/common/util/PreferencesUtils.etsimport{common}from'@kit.AbilityKit';import{preferences}from'@kit.ArkData';classPreferencesUtil{prefMap:Map<string,preferences.Preferences>=newMap()/*加载首选项*/lo......
  • 鸿蒙NEXT开发-沉浸式导航和键盘避让模式(基于最新api12稳定版)
    注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识专栏地址:https://blog.csdn.net/qq_56760790/category_12794123.html目录1.沉浸式导航1.1基本介绍1.2如......
  • HarmonyOS NEXT 开发之ArkTS基础入门
    ArkTS是HarmonyOSNEXT的开发语言,它基于TypeScript并进行了扩展和优化。以下是一些基础语法知识点、示例用法及注意事项。一、ArkTS简介ArkTS是一种基于TypeScript的编程语言,主要用于HarmonyOS应用的UI界面和业务逻辑开发。它在TypeScript的基础上,进行了一些针对......
  • 字节预热智能硬件 Ola Friend,预计为智能耳机;鸿蒙 NEXT 公测正式开启,微信邀请内测丨RTE
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代......