gpt4 book ai didi

reflection - 尚不支持左侧为空的 Kotlin 类文字?

转载 作者:IT老高 更新时间:2023-10-28 13:47:35 25 4
gpt4 key购买 nike

我正在尝试使用这样的 if 表达式检查一个类型是否符合另一种类型:

if (String::class is Any::class)

这给了我尚不支持左侧为空的错误类文字。谁能详细说明该错误和/或告诉我应该如何进行此检查?

编辑(澄清):我无法进行相等性检查,因为我需要知道左侧的类是否与右侧的类匹配或者是它的子类。因此,如果左侧类的实例可以安全地转换为右侧类。

基本上我需要相当于:

if ("A string" is Any)

但没有 String 实例,这里只是使用 String 的例子。

最佳答案

我想如果 Kotlin 在一个 KClass 和另一个 KClass 之间使用 is 运算符的方式与在一个实例和类型,这就是为什么我试图做的事情不起作用。不管怎样,我做了这个小中缀函数来模仿这个功能。但是它当然只适用于 JVM 目标,因为它使用 Java 反射。这是 answer given in this SO post .

infix fun <T : Any, C : Any> KClass<T>.can(comparate: KClass<C>) =
comparate.java.isAssignableFrom(this.java)

这将允许您完全按照我的要求做,但使用 can 函数而不是像这样的 is 运算符:

if(String::class can Any::class)

关于reflection - 尚不支持左侧为空的 Kotlin 类文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com