在运行时,我试图验证一个特定的KClass<out Any>是否是枚举类型。
这样做的最佳方法是什么?这是否可以在不依赖特定运行时(例如,JVM 或 JS)的情况下完成?
fun isEnum( type: KClass<out Any> ): Boolean
{
... ?
}
Run Code Online (Sandbox Code Playgroud)
也是一个仅限 JVM 的解决方案,但更短,使用isSubClassOf:
fun isEnum(type: KClass<out Any>) = type.isSubclassOf(Enum::class)
Run Code Online (Sandbox Code Playgroud)
以下内容似乎适用于 JVM,依赖于限定类型名称。
fun isEnum( type: Kclass<out Any> ): Boolean
{
return type.supertypes.any { t ->
(t.classifier as KClass<out Any>).qualifiedName == "kotlin.Enum" }
}
Run Code Online (Sandbox Code Playgroud)
然而,这不适用于 JS,因为KClass::supertypes它不适用于该运行时。
| 归档时间: |
|
| 查看次数: |
3569 次 |
| 最近记录: |