2017-07-14 60 views

回答

3

这只是“只是”一个警告,说它不是100%安全的投射。更好的选择是:

if (objectOfTypeAny is List<*>) { 
     val a: List<Apples> = objectOfTypeAny.filterIsInstance<Apples>() 
     ... 
} 

详见https://kotlinlang.org/docs/reference/typecasts.html

+0

这不会删除警告,不会检查转换,实际上甚至不会编译。 –

+0

@JBNizet是的,它的工作原理。在你侮辱某人之前,请先尝试一下。 – guenhter

+0

1.我没有侮辱任何人。 2.我试了一下:'错误:(7,31)Kotlin:类型不匹配:推断类型是Any,但预期列出。亲自看看:http://rextester.com/ISWQP14284 –

2

除了忽略警告(或改进设计以避免演员),没有。

此警告意味着即使列表实际上不是List<Apples>,但包含的内容不是Apples,也可以在运行时执行强制转换。

它存在,因为泛型没有在Java中实现。泛型使用类型擦除。他们是编译时安全网,而不是运行时安全网。

相关问题