ArkTS 如何将构造方法保存到 HashMap 中?

我的需求是所有消息有相同的基类,需要把不同消息类型的构造方法保存起来

等收到消息的时候,通过对应的构造方法,创建出对应的消息体对象

考虑过如下的方案:

使用 JSON.parse 直接转成对象,结论是:不能这么做,因为用户自定义的消息可能不是合法的 JSON

我在 TS 中可以把 HashMap 保存构造方法,但是同样的代码写到 ArkTS 会报错

报错的信息如下

Constructor function type is not supported (arkts-no-ctor-signatures-funcs)

HarmonyOS
2024-08-02 18:18:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
davis_li

可以参考如下写法:

export default class MyHashMap{ 
  map = new HashMap<string, () => MyClass>(); 
  constructor() { 
    this.map.set("1",() => { return new MyClass()}) 
    const class1 = this.map.get("1") 
    let myClass = class1() 
    myClass.foo() 
  } 
} 
class MyClass{ 
  constructor() { 
    console.log("MyClass constructor") 
  } 
  foo(){ 
    console.log("MyClass foo") 
  } 
}

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-more-cases-0000001774279594-V5#ZH-CN_TOPIC_0000001834300808__arkts-no-ctor-signatures-funcs

分享
微博
QQ
微信
回复
2024-08-03 17:05:03
相关问题
HarmonyOS如何将PixelMap保存到相册?
458浏览 • 1回复 待解决
如何将Pixmap保存到本地文件?
371浏览 • 1回复 待解决
如何将像素点保存到图片文件
2231浏览 • 1回复 待解决
如何将一段文字保存到剪切板
244浏览 • 1回复 待解决
如何将视频保存到相册以及主机端
5459浏览 • 1回复 待解决
有谁知道如何将图片保存到相册
915浏览 • 1回复 待解决
如何将Map/HashMap转为Object对象?
1770浏览 • 1回复 待解决
HarmonyOS ArkTS如何实现泛型构造函数
361浏览 • 1回复 待解决
如何将this的指向改为方法
358浏览 • 1回复 待解决
ets如何将图片转为byte[]?
3127浏览 • 1回复 待解决
如何将cookie同步到web
424浏览 • 1回复 待解决
HarmonyOS PhotoViewPicker 保存到图库
448浏览 • 1回复 待解决
HarmonyOS如何把图片保存到手机相册
391浏览 • 1回复 待解决