HarmonyOS 鸿蒙Next 怎么样写同名方法不包错

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 怎么样写同名方法不包错 怎么样写同名方法不报错 如:TCPSocket的,

tcp.on('message', async (value) => {
  JLog.info(this.TAG, "on message value :" + JSON.stringify(value));
  await this.onMessageResponse(value.message)
});
tcp.on('connect', () => {
  JLog.info(this.TAG, "on connect");
});
tcp.on('close', () => {
  JLog.info(this.TAG, "on close");
});

想做一些监听事件回调的,但怎么写都有一定的报错: 1、Duplicate function implementation. <ArkTSCheck> 2、This overload signature is not compatible with its implementation signature.


更多关于HarmonyOS 鸿蒙Next 怎么样写同名方法不包错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这种重名在arkts中不支持(js中应该不支持的),了解到系统的一些接口(如location模块的on接口)这种写法底层实现的是C代码,.d.ts仅是声明; 如果您想实现类似的能力,通过参数辨别,可以使用if/switch进行判断,如:

更多关于HarmonyOS 鸿蒙Next 怎么样写同名方法不包错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你贴个完整代码看看

在HarmonyOS(鸿蒙)系统中,编写同名方法而不引发错误,通常涉及方法的重载(Overloading)概念。重载是指在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。以下是如何在鸿蒙系统中实现方法重载而不报错的简要说明:

  1. 方法签名不同:确保每个同名方法的参数列表(包括参数类型和参数个数)是唯一的。这是区分重载方法的关键。

  2. 返回类型不影响重载:在鸿蒙(以及Java和C++等语言)中,方法的返回类型不构成方法重载的区分条件。即使返回类型不同,只要参数列表相同,编译器也会报错。

  3. 访问修饰符:重载方法的访问修饰符(如public、protected、private)可以相同,也可以不同,但这不影响重载的判定。

  4. 异常抛出:方法抛出的异常类型也不构成重载的区分条件。

示例代码:

public class Example {
    public void display(int a) {
        System.out.println("Integer: " + a);
    }

    public void display(String a) {
        System.out.println("String: " + a);
    }
}

上述代码中,display方法被重载了两次,一次接受int类型参数,另一次接受String类型参数,因此不会报错。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部