鸿蒙Next中如何判断范型类型是class还是interface

在鸿蒙Next开发中,如何判断一个泛型类型参数T是class还是interface?比如在泛型方法或类中,需要根据T的实际类型(类或接口)执行不同的逻辑,有没有现成的API或反射方法可以实现这个功能?求具体的代码示例。

2 回复

在鸿蒙Next里,判断范型类型是class还是interface?简单!用T.class.isInterface()就行啦!如果返回true,那就是接口;false就是类。别搞混了,不然代码会跟你开玩笑的!😄

更多关于鸿蒙Next中如何判断范型类型是class还是interface的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS Next)中,判断泛型类型是类还是接口,可以通过反射机制实现。以下是具体方法:

  1. 使用TypeKind枚举:通过Type对象的getKind()方法获取类型种类,然后与TypeKind.CLASSTypeKind.INTERFACE比较。

  2. 示例代码

import ohos.rpc.IRemoteObject;
import ohos.utils.Sequenceable;
import ohos.utils.Parcel;

public class GenericTypeChecker {
    public static <T> void checkType(Class<T> type) {
        if (type.isInterface()) {
            System.out.println(type.getSimpleName() + " 是接口");
        } else {
            System.out.println(type.getSimpleName() + " 是类");
        }
    }

    // 测试示例
    public static void main(String[] args) {
        checkType(String.class);      // 输出:String 是类
        checkType(Sequenceable.class); // 输出:Sequenceable 是接口
    }
}

说明

  • 直接使用Class<T>isInterface()方法判断。
  • 适用于编译时已知的具体类型。
  • 如果涉及运行时泛型类型擦除,需通过其他方式(如ParameterizedType)获取实际类型。

此方法简单有效,适用于鸿蒙Next的Java开发场景。

回到顶部