HarmonyOS 怎么进行反射调用对象的静态方法

请问一下decodeObj函数要怎么写?

class TestA  {
  public static encode(message: TestA){
    console.info('encode TestA')
  }
}
class TestB  {
  public static encode(message: TestB){
    console.info('encode TestB')
  }
}
/**
 * @param obj 含有encode函数的对象
 */
function decodeObj(obj:object){
  //TODO 怎么根据obj对象调用对应的encode函数
}
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

可以给class加个属性,指向自己的class,可以参考以下demo:

class TestA {
  myClass: ESObject = TestA
  public static  encode(message: TestA) {
    console.info('encode TestA')
  }
}
class TestB {
  myClass: ESObject = TestB
  public static encode(message: TestB) {
    console.info('encode TestB')
  }
}
/**
 @param obj 含有encode函数的对象
 */
function decodeObj(obj: ESObject) {
  //TODO 怎么根据obj对象调用对应的encode函数
  obj.encode()
}
@Entry
@Component
struct Index1234 {
  @State testA: TestA = new TestA()
  @State testB: TestB = new TestB()
  build() {
    Column() {
      Button('调用TestA', { type: ButtonType.Normal })
        .onClick(() => {
          decodeObj(this.testA.myClass)
        }).margin({ bottom: 20 })
      Button('调用TestB', { type: ButtonType.Normal })
        .onClick(() => {
          decodeObj(this.testB.myClass)
        })
    }.justifyContent(FlexAlign.Center)
    .height('100%')
    .width('100%')
  }
}
分享
微博
QQ
微信
回复
23h前
相关问题
HarmonyOS NAPI调用ArkTS静态方法
620浏览 • 1回复 待解决
HarmonyOS怎么反射调用,有demo吗
28浏览 • 1回复 待解决
native侧如何调用静态方法
1146浏览 • 1回复 待解决
HarmonyOS 怎么调用C语言.a静态
500浏览 • 1回复 待解决
HarmonyOS JSON转换后调用对象方法报错
173浏览 • 1回复 待解决
反射是否支持,调用Reflect编译错误
1772浏览 • 1回复 待解决
native侧如何使用类静态方法
848浏览 • 1回复 待解决
求告知静态订阅相关方法
721浏览 • 1回复 待解决