HarmonyOS 鸿蒙Next 如何判断一个类变量是否为Resource类型?

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

HarmonyOS 鸿蒙Next 如何判断一个类变量是否为Resource类型?

private mBtnCountingText?: string | Resource | null = null

我有一个类变量声明如上,可以是string、Resource、null

我要根据入参的类型去处理不同的判断,string可以用typeof判断,Resource该怎么做类型判断呢?

8 回复

Type.ts文件保存,不可以用ets:

export class Type{

 static checkTypeByMember<T>(object: any, member): object is T {
   if (typeof object != "object"){
     // fix: Cannot use 'in' operator in Non-Object
     return false
   }
   return member in object;
 }

}

没有,我的做法是先判断是否为string或者null或者能判断出类型的,最后else就默认是Resource处理了

解决啦吗,楼主,今天我也遇见这个问题啦,蹲个解决方案吗?

没有,我的做法是先判断是否为string或者null或者能判断出类型的,最后else就默认是Resource处理了

我也遇到类似的问题,求解答

试试构造instanceof 原型链等方式 或者判断Resource里面的属性存在不

在HarmonyOS鸿蒙Next系统中,判断一个类变量是否为Resource类型,可以通过Java的反射机制以及类型检查来实现。Resource类型通常用于表示资源,如字符串、图片等。

具体步骤如下:

  1. 获取变量类型:使用Java的反射API获取变量的类型信息。

  2. 类型比较:将获取到的类型与Resource类型进行比较。在HarmonyOS中,Resource类通常位于ohos.aafwk包下。

示例代码如下:

import ohos.aafwk.Resource;
import java.lang.reflect.Field;

public class ResourceChecker {
    public static boolean isResourceType(Object obj, String fieldName) {
        try {
            Field field = obj.getClass().getDeclaredField(fieldName);
            Class<?> fieldType = field.getType();
            return fieldType.equals(Resource.class);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
            return false;
        }
    }
}

在上述代码中,isResourceType方法接受一个对象obj和字段名fieldName,返回该字段是否为Resource类型。

注意:

  • 使用反射时,需处理好异常。
  • 确保变量所在的类已正确导入并存在。

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

回到顶部