gpt4 book ai didi

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

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

我有课

class Generic<T : SuperType>()

而且这段代码不正确

fun typeCheck(s: SuperType): Unit {
when(s){
is T -> //do some thin
}
}

但将 s 转换为类型 T s as T 显示警告 - 不安全转换。
如何检查 s 是类型 T

最佳答案

如果您需要检查某些东西是否属于泛型 T你需要有一个 Class<T> 的实例检查。这是 Java 中的一种常见技术,但在 Kotlin 中,我们可以使用内联工厂方法来获取类对象。

class Generic<T : Any>(val klass: Class<T>) {
companion object {
inline operator fun <reified T : Any>invoke() = Generic(T::class.java)
}

fun checkType(t: Any) {
when {
klass.isAssignableFrom(t.javaClass) -> println("Correct type")
else -> println("Wrong type")
}

}
}

fun main(vararg args: String) {
Generic<String>().checkType("foo")
Generic<String>().checkType(1)
}

关于kotlin - 如何检查 Kotlin 中的泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33146160/

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