gpt4 book ai didi

kotlin - 如何将 List< 转换为 List

转载 作者:行者123 更新时间:2023-12-01 14:38:05 26 4
gpt4 key购买 nike

我试图从泛型方法返回一个特定的列表

代码如下:

val list: List<Animal> = listOf(Animal(1), Animal(2), Animal(7))

val storage = object : Storage {
override fun <T> fetch(clazz: Class<T>): List<T> {
if(clazz is Animal::class.java){
return list
}
throw RuntimeException()
}

}

但我有一个异常(exception):

Error:(14, 20) Kotlin: Type mismatch: inferred type is kotlin.collections.List<polar.QueryTest.Animal> but kotlin.collections.List<T> was expected

如何正确返回列表?

最佳答案

编译器无法找出类型之间的关系 List<T>List<Animal>在您的示例中,因此您应该使用 as operator 进行未经检查的转换.另请注意,您使用的是 is operator您可能打算在其中使用简单的相等性检查:

val list: List<Animal> = listOf(Animal(1), Animal(2), Animal(7))

val storage = object : Storage {
fun <T> fetch(clazz: Class<T>): List<T> {
if (clazz == Animal::class.java) {
return list as List<T>
}
throw RuntimeException()
}
}

如果 unchecked cast 警告打扰到您,您可以使用以下注释抑制它:@Suppress("UNCHECKED_CAST")

关于kotlin - 如何将 List<<MyClass> 转换为 List<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35799902/

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