如何将List <转换为List ?
我试图从generics方法返回一个特定的列表
代码如下:
val list: List = listOf(Animal(1), Animal(2), Animal(7)) val storage = object : Storage { override fun fetch(clazz: Class): List { if(clazz is Animal::class.java){ return list } throw RuntimeException() } }
但是我有一个例外:
Error:(14, 20) Kotlin: Type mismatch: inferred type is kotlin.collections.List but kotlin.collections.List was expected
如何正确返回列表?
编译器不能在你的例子中找出typesList
和List
之间的关系,所以你应该用as
运算符进行一个未经检查的转换。 另外请注意,您正在使用is
运算符 ,您可能打算使用简单的相等性检查:
val list: List = listOf(Animal(1), Animal(2), Animal(7)) val storage = object : Storage { fun fetch(clazz: Class ): List { if (clazz == Animal::class.java) { return list as List } throw RuntimeException() } }
如果未经检查的投射警告干扰了您,您可以使用以下注释将其禁止: @Suppress("UNCHECKED_CAST")
- 高效的地图和filter组合与stdlibs
- 在Kotlin中调用操作符&运算符重载
- 智能投到BootsrapButton是不可能的,因为endtrip是这个时候改变了的可变属性
- generics类的types约束?
- 如何调试NoClassDefFoundError(Gradle,Kotlin)
- java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex
- Android – Kotlin – 对象必须声明为抽象或实现抽象成员
- 我怎样才能使用回报,而不是让Kotlin?
- Kotlin的generics:generics映射参数中的types不匹配