如何在Kotlin中检查泛型类型

如何在Kotlin中检查泛型类型

本文介绍了如何在Kotlin中检查泛型类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Kotlin中测试泛型.

I'm trying to test for a generic type in Kotlin.

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

但是编译器抱怨

普通类型的支票效果很好.

The check with a normal type works well.

if (value is String) { ... }

使用Kotlin 0.4.68.

Kotlin 0.4.68 is used.

我在这里想念什么?

推荐答案

问题在于类型参数已被擦除,因此您无法检查完整类型Map,因为在运行时没有有关这些String和Any的信息.

The problem is that type arguments are erased, so you can't check against the full type Map, because at runtime there's no information about those String and Any.

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

To work around this, use wildcards:

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

这篇关于如何在Kotlin中检查泛型类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 07:17