当我尝试像下面这个例子那样将任何东西转换成列表时,我会得到'未选中的转换:任何转换为列表'警告。有这种问题的解决方法吗?如何将任何内容投射到Kotlin的列表中?
val x: List<Apples> = objectOfTypeAny as List<Apples>
当我尝试像下面这个例子那样将任何东西转换成列表时,我会得到'未选中的转换:任何转换为列表'警告。有这种问题的解决方法吗?如何将任何内容投射到Kotlin的列表中?
val x: List<Apples> = objectOfTypeAny as List<Apples>
这只是“只是”一个警告,说它不是100%安全的投射。更好的选择是:
if (objectOfTypeAny is List<*>) {
val a: List<Apples> = objectOfTypeAny.filterIsInstance<Apples>()
...
}
除了忽略警告(或改进设计以避免演员),没有。
此警告意味着即使列表实际上不是List<Apples>
,但包含的内容不是Apples
,也可以在运行时执行强制转换。
它存在,因为泛型没有在Java中实现。泛型使用类型擦除。他们是编译时安全网,而不是运行时安全网。
这不会删除警告,不会检查转换,实际上甚至不会编译。 –
@JBNizet是的,它的工作原理。在你侮辱某人之前,请先尝试一下。 – guenhter
1.我没有侮辱任何人。 2.我试了一下:'错误:(7,31)Kotlin:类型不匹配:推断类型是Any,但预期列出。亲自看看:http://rextester.com/ISWQP14284 –