HarmonyOS鸿蒙Next中Sendable对象传递到其它线程后,如何使用instanceof接口判断Sendable对象是否是类的实例?

HarmonyOS鸿蒙Next中sendable类TestObj的对象传递到其它线程之后,类型变成TestObj[Sendable], 使用 instanceof TestObj来判断会false。这种情况应该怎么判断Sendable对象是类TestObj的实例呢?

3 回复

使用instanceof需要在导出sendable类的文件里加上"use shared",把文件标记成共享的。

更多关于HarmonyOS鸿蒙Next中Sendable对象传递到其它线程后,如何使用instanceof接口判断Sendable对象是否是类的实例?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Sendable对象传递到其它线程后,可以使用instanceof接口判断该对象是否是某个类的实例。具体操作是直接使用instanceof关键字进行类型检查,例如:if (sendableObj instanceof MyClass)instanceof会返回一个布尔值,表示对象是否为指定类的实例。

在HarmonyOS Next中,当Sendable对象跨线程传递后,确实会变成原类型名加[Sendable]后缀的形式。针对这种情况,建议使用以下两种方式判断对象实例:

  1. 使用Object.getClass().getName()方法获取完整类名进行判断:
if (obj.getClass().getName() === "TestObj[Sendable]") {
    // 处理逻辑
}
  1. 更推荐的方式是使用Sendable提供的isTypeOf方法:
if (Sendable.isTypeOf(obj, TestObj)) {
    // 处理逻辑
}

这两种方法都能正确识别跨线程后的Sendable对象类型。其中第二种方式是专门为Sendable设计的类型检查API,代码更简洁且可读性更好。

回到顶部