如何检查Kotlin中的泛型类型?

我正在尝试在Kotlin中测试一个通用类型。

if (value is Map<String, Any>) { ... } 

但编译器抱怨

无法检查擦除类型的实例:jet.Map

正常类型的检查运行良好。

 if (value is String) { ... } 

使用Kotlin 0.4.68。

我在这里错过了什么?

问题是类型参数被擦除,所以你不能检查完整类型的Map,因为在运行时没有关于这些String和Any的信息。

要解决此问题,请使用通配符:

 if (value is Map<*, *>) {...} 
Interesting Posts